Home Stickies

3Point Shader - Shader material editor and Quality Mode normalmaps for 3ds Max

1356721

Replies

  • perna
    Offline / Send Message
    perna quad damage
    Sandbag, your questions have been answered previously in this thread, but don't take our word for anything. 3 Point Shader Lite is available for download so you can test it yourself. It has no limitations as far as Quality Mode rendering goes.
  • THE 5
    Offline / Send Message
    THE 5 polycounter lvl 10
    eotechcompare.jpg
    Is this nice fine noise inside the Cubemap or produced by the Normalmap? o_O
    It looks so amazing, I'd like to know how to achive this!
  • Norman3D
    Offline / Send Message
    Norman3D polygon
    Is there any chance we could see these comparison shots working in-game?
  • jocose
    Offline / Send Message
    jocose polycounter lvl 11
    Are mirrored UVs supported in "quality mode"? I was able to get a few of my models to load fine but the moment I enable quality mode a big seam appears down the middle of my model where its mirrored.
  • CrazyButcher
    Offline / Send Message
    CrazyButcher polycounter lvl 16
    do you mean mirrored object-space ?

    then ensure following:
    - "flipX/flipY" Normal map settings disabled in shader (by default one is active)
    - Object-Space enabled in shader
    - Quality Normals enabled in shader
    - "3 Point Quality Normals" modifier is applied and set to "Mirrored Object Space"
    - the mirrored pieces are offset by 1 outside the regular [0,1] UV-coordinate box.
  • jocose
    Offline / Send Message
    jocose polycounter lvl 11
    Its a tangent space normal map.

    The model renders completely fine in our engine at work, in the 3point shader without quality mode enabled, in the xnormal previewer, and in the marmoset model viewer.

    UV shells are offset by 1, and I did toggle the "flipY" check box to make the model display correctly from the get go.

    The issue only appears when I enable "quality mode" in the shader. The result of the model smooths great when I enable. No seams are found any where else on the model except down the middle where its mirrored.
  • Sandbag
    Offline / Send Message
    Sandbag polycounter lvl 16
    lets go ahead and pretend I'm really, really dumb. Can you spell out the answers for me in simple, easy to understand terms?

    I've read over the highlighted post from fletch (as well as the whole thread) and I dont see where any of my questions were answered. Just vague generalities, not answers.

    I'm not trying to be a dick or anything, I'm genuinely curious. They're not trick questions.

    1) Is this simulating the use of Object Space maps? (I foolishly relied on memory and previously said Tangent Space, my apologies).

    2) Does this retain the disadvantages of Object Space Maps? (apparently mirroring is not an issue with this, but what about reusing map space on multiple objects, ability to use a detail map)

    2) What is the exact process for achieving these results in an engine, say unreal. (modifying source code for all shaders, inserting your shader code into normal rendering?)

    I'm no expert, nor any kind of Technical Artist, I just understand that there are normally limitations to Object Space maps that you have to accept for the trade off of no longer having to worry about smoothing errors (or by proxy, the need for additional control edges).

    Since your studio's artists, as well as 8 Monkey Labs typically favor Object Space maps (which tend to get the same results as "quality mode") I am very curious as to the means that you're achieving these advancements, and how closely they are tied to simply using those type of maps themselves.



    On a totally separate note, will the full version be capable of exporting your shader setups to HLSL for use/porting to game engines?
  • doc rob
    Offline / Send Message
    doc rob polycounter lvl 16
    StefanH wrote: »
    yeah found that.. a quick way of controlling the reflection intensity by the specular map would still be handy.. thx for your help :)

    maybe load your specular map into the reflection mask slot?
  • cman2k
    Offline / Send Message
    cman2k polycounter lvl 15
    Sandbag: Look man, I'm not entirely sure here but basically the code is already available. You can download this thing for free, and the HLSL code is in there. When these guys say "it should be obvious", it's because it's pretty easy to dig into the release and see exactly how they are doing what they are doing.

    They work for a company, and this work of theirs is clearly copyright. For whatever reason, they have not freely released the algorithms they use without copyright. They aren't going to come in here and tell you it's ok to steal their shit, because it clearly isn't, and the shader code itself has provisions for you not to steal it.

    That being said, parts of this boil down to simple ways of doing math a little differently, and you can't really copyright math concepts. If someone were to say, boil down the algorithms and understand them, they could easily understand how to implement the fix in their own way. The information is there, and it's free. Studying the solution and understanding the problem should make it pretty easy to implement a similar solution to the same problem.

    You can keep coming here and asking for your answers, but unless they decide to release a copyright-free boiled-down algorithm for this, then I doubt you'll get much in the way of clear answers. All they seem to be allowed to say is generalities, likely because they are trying to answer your question while covering their asses.

    Be thankful, they've given you all the hints you need. If you are truly interested, show this to a graphics programmer and they can likely take it from there. They have clearly stated they want this to be adopted, and they are trying to support that while still maintaining their copyrights on this particular release.
  • perna
    Offline / Send Message
    perna quad damage
    Sandbag, I can only repeat previous statements. As far as we are concerned, the below fully answers your specific questions. I'm sorry that you feel we have been vague. We are committed to provide pertinent information, however I hope you understand that we can not commit to take the time to explain the information to each individual.

    1) 3Point Shader supports both tangent and object space normal maps.
    2) The only tweak for object space normal map rendering is enabling mirroring.
    3) Quality mode requires custom normals and custom tangent calculations, like any normal map render variation.
    Sandbag wrote: »
    Since your studio's artists (...) typically favor Object Space maps (which tend to get the same results as "quality mode")

    There's no connection whatsoever between our tangent and object space renderers and their results, neither do any of our artists prefer nor use object space maps.

    Sandbag wrote: »
    On a totally separate note, will the full version be capable of exporting your shader setups to HLSL for use/porting to game engines?

    No such functionality is planned at this time.
  • EarthQuake
    Jocose, just to be clear, this is a map baked in max correct, not maya/xn/ect?
  • perna
    Offline / Send Message
    perna quad damage
    Reiteration, to be clear: Only 3ds Max bakes correct 3ds Max normal maps. There's no other app which will bake "better" 3ds max normals.
  • jocose
    Offline / Send Message
    jocose polycounter lvl 11
    @EQ: No, I use Xnormal for all my baking, is that a problem? Sorry for my ignorance if I was suppose to baking 3dsmax. I guess the tangent basis in 3dsmax isn't the same as Xnormal so that's probably what's causing the issue?
  • vahl
    Offline / Send Message
    vahl polycounter lvl 14
    you just made me a very sad panda jocoste :'(
  • Sandbag
    Offline / Send Message
    Sandbag polycounter lvl 16
    If you cant or wont go into specifics then that's fine. That's totally your right, that's all I need to hear.

    I dont totally understand the purpose of this exorcise/product if there isn't going to be an effort to make this technology available (from the source, not from someone's attempted disassembly) to final production levels, but likewise, that is your decision and all I want to know at this point.

    Like I said, I'm not trying to be a dick or start a fight, I just love hearing clear and detailed answers whenever I can get my hands on them.

    Thanks for the quick responses
  • jocose
    Offline / Send Message
    jocose polycounter lvl 11
    vahl wrote: »
    you just made me a very sad panda jocoste :'(


    Sorry, got 50 things going on at once today, didn't occur to me until I saw EQs post, heads not that clear, wasn't trying to be stupid :(
  • perna
    Offline / Send Message
    perna quad damage
    Sandbag wrote: »
    If you cant or wont go into specifics then that's fine. That's totally your right, that's all I need to hear.

    That's not something you've heard from us. The opposite is true, which has been clearly stated.
    Sandbag wrote: »
    I dont totally understand the purpose of this exorcise/product if there isn't going to be an effort to make this technology available (from the source, not from someone's attempted disassembly) to final production levels, but likewise, that is your decision and all I want to know at this point.

    There has been no such decision on our end. The opposite is true, which has been clearly stated.
    Sandbag wrote: »
    I'm not trying to be a dick or start a fight

    I understand.
  • Joao Sapiro
    Online / Send Message
    Joao Sapiro polycounter
    sandbag, if you read carefully youll see that everything has been answered repeatedly...
  • vahl
    Offline / Send Message
    vahl polycounter lvl 14
    jocose wrote: »
    Sorry, got 50 things going on at once today, didn't occur to me until I saw EQs post, heads not that clear, wasn't trying to be stupid :(

    hehe no worries dude, I was just teasing you :) I had to double check if it was a bug or something on your end tho ;)
  • hyrumark
    Offline / Send Message
    hyrumark polycounter lvl 12
    I can open up the .fx shader and see exactly what is going on.

    What ISN'T clear, is what the modifier is doing. Is it calculating a custom, tangent basis that matches the scanline renderer? And if so, how does a developer get his hands on this code? Will it be available with the full paid version?
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    The description of max's tangent basis and bi normal vector calculation was described here.
    http://area.autodesk.com/blogs/chris
  • Ben Cloward
    Offline / Send Message
    Ben Cloward polycounter lvl 15
    The modifier computes the same tangent space basis that Max uses when the normal map is baked. It stores this data in map channel 3, 4, and 5. Then the shader (when set to quality mode), reads the normal, binormal, and tangent data from those map channels instead of from Max's broken viewport data. It's a really clever solution to the problem IMO.

    If you want to make this work correctly in a game engine, the main thing you need to do is to make sure that your mesh exporter uses the same code (from r_fletch_r's link above) to generate the normal, binormal, and tangent - or if your engine generates tangents and binormals at run time - that's it's doing it the same way that Max's normal baker is doing it.

    This isn't really about shaders. It's about the tangent basis that gets fed into the shader. The reason you have to use a special shader for this is because the shader needs to grab the tangent basis from map channels 3, 4, and 5 instead of from the standard location. Any shader can be made to do that quite easily.

    Nice work guys! You're really helping the industry.
  • Electro
    Offline / Send Message
    Electro polycounter lvl 16
    Nice work 3pointpeeps!

    Good to see stuff actually displaying in max correctly for a change ;)
    Everything Ben Cloward said is spot on, nice summary.

    r_fletch_r: thanks for the link! hadn't noticed it previously, now I'll be able to get my mates engine displaying max generated normalmaps correctly. Hurray! ... too bad it has to break every other normalmap in the process :P
  • rollin
    Offline / Send Message
    rollin polycounter
    the "problem" is that not everyone can read through the whole technical background about WHY someone needs such high quality thing for max only

    they read "normal maps look better" and that what they think it does

    so answering the same questions again and again or making an faq (which will not be read) is what you have to do 3point :)

    imo it will just take some time until this issue spreads more widely
  • Rick Stirling
    Offline / Send Message
    Rick Stirling polycounter lvl 14
    I finally got a chance to use it this morning - it's really, REALLY smart in the viewport.

    I'm just trying to figure out an easy of getting it to handle composite spec maps now - splitting them off into separate images is a no-go for pipeline use.

    You say the full version will be automated - does that mean there will be maxscript access to the various shader parameters?
  • Ged
    Offline / Send Message
    Ged interpolator
    this is looking excellent guys. would there be any way to get jogshy to create an option in xnormal to bake 3dsmax style normal maps? it would be good if there was more than one way to get the desired maps.
  • cw
    Offline / Send Message
    cw polycounter lvl 15
    I finally got a chance to use it this morning - it's really, REALLY smart in the viewport.

    I'm just trying to figure out an easy of getting it to handle composite spec maps now - splitting them off into separate images is a no-go for pipeline use.

    You say the full version will be automated - does that mean there will be maxscript access to the various shader parameters?

    For 3ps guys - Is it fine for '3ps-standard.fx' to be edited for non commercial use, and if purchased, for commercial use?

    In that case composite spec map would be straightforward, just a case of fiddling with the guts of the shader to put what you need to where it's needed. :)
  • cw
    Offline / Send Message
    cw polycounter lvl 15
    rollin wrote: »
    such high quality thing for max only

    It's kind of a bugfix or standardisation of max's tangent bases between renderer and viewport, not super extra quality beyond what may have been expected as part of max's suite of tools originally. That's not to diminish the efforts of 3ps and others in diggin into this.

    It's just taken a bit of time and effort for a nice solution to be made, and a lovely solution it is too! :D

    Afaik maya works like this already and xnormal too, with their baker and viewport synced up properly.

    Am I ranting, no not quite. :) I'm off to check some old assets. :D
  • CrazyButcher
    Offline / Send Message
    CrazyButcher polycounter lvl 16
    cw wrote: »
    For 3ps guys - Is it fine for '3ps-standard.fx' to be edited for non commercial use, and if purchased, for commercial use?

    cw: The user agreement precludes that. We want to avoid seeing branches of the shader released publically.
  • Rick Stirling
    Offline / Send Message
    Rick Stirling polycounter lvl 14
    cw: The user agreement precludes that. We want to avoid seeing branches of the shader released publically.

    Is that for Lite only? If a studio purchased the commercial version and wouldn't be distributing it, could they update the shader? In my case this would be to deal with composite specular.
  • perna
    Offline / Send Message
    perna quad damage
    Good to see we're getting the technical talent in here!

    Rick: To us the artist comes first. From that perspective, tools and/or photoshop actions should be used to compress maps and export game-ready data, it should not be a manual process. We can't hope to support specific pipelines (as there's so many), but wide requests will be considered. We have some very cool solutions on this end for compression of spec/gloss maps, with full colour support. However the artists aren't even required to be aware of it - to them it's a fully transparent process done on the tools end of things.

    Ged: It's fully possible, recommended, and you can expect to see announcements from other software developers. Naturally we wanted to be the first to officially announce Quality Mode. You can extrapolate from that what you will ;)

    rollin: Quality Mode is a general solution. As cw touches on: This is how 3ds Max normal maps were supposed to be handled in the first place. It's not a tweak, hack or "creative" solution. We are not doing anything "better", we are simply doing it correctly. Any game engine that renders the 3ds Max normals with shading errors is doing it wrong. Previously they have not been aware of this. Now they can implement a fix, either on their own or by contacting us for details.

    Developers can write to [email protected], though further support will coincide with the full release, which unlike Lite is licensed for commercial use.
  • cw
    Offline / Send Message
    cw polycounter lvl 15
    Thanks for the clarification guys. :D

    I was just thinking, the main benefit apart from production-wise is that people who are learning how to do these techniques can feel more secure in the knowledge that the process just works!

    I believe many of the misconceptions and myths about the normal map workflow stem from the fuzziness and non-standard way the tech evolved and became used. This is going to be a godsend top new people learning the process for the 1st time as it will just work. :D
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    i'm having a peculiar problem right now. if i enable quality normals, it seems that the model becomes flat shaded....
    normalmaps all baked in 3dsmax 2010

    wierde.jpg
  • Farfarer
    Offline / Send Message
    Farfarer Polycount Sponsor
    Same issue I had.

    There's a 3Point Quality Normals modifier you need to put on your model that will allow the Quality Mode to render properly :)
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    oooooh.

    /dumbass
  • vahl
    Offline / Send Message
    vahl polycounter lvl 14
    it's written right between the "quality mode" label and the quality mode checkbox in the shader ui, too, you can see it on your screenshot :)
  • perna
    Offline / Send Message
    perna quad damage
    The full version is much more dumbass-proof when it comes to these things ;)
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    well, as long as the full version is affordable to the every day artist, you can count on my purchase =]
  • cw
    Offline / Send Message
    cw polycounter lvl 15
    I'd buy this for portfolio use as well, definitely.

    That reminds me - need to make some portfolio work! Last 2 projects leave me with minimal meaty bits of work to show. Spreadsheets don't count! :D
  • perna
    Offline / Send Message
    perna quad damage
    by the way, everyone feel free to post results you're getting, we'd love to see what people are doing with this, and especially what you guys can do with the more advanced capabilities as there's a lot of untapped potential there.
  • rollin
    Offline / Send Message
    rollin polycounter
    perna wrote: »

    rollin: Quality Mode is a general solution. As cw touches on: This is how 3ds Max normal maps were supposed to be handled in the first place. It's not a tweak, hack or "creative" solution. We are not doing anything "better", we are simply doing it correctly. Any game engine that renders the 3ds Max normals with shading errors is doing it wrong. Previously they have not been aware of this. Now they can implement a fix, either on their own or by contacting us for details.

    have I said something else?
  • doc rob
    Offline / Send Message
    doc rob polycounter lvl 16
    In my case this would be to deal with composite specular.

    Rick - just curious - what is composite specular? A quick googling turns up nothing for me.
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    doc rob wrote: »
    Rick - just curious - what is composite specular? A quick googling turns up nothing for me.

    Could have my wires crossed but its not uncommon to composite a number of greyscale maps into the RGBA channels of an image.


    eg. store Specular level in the R channel. Glossyness in the G channel. the final image looks garbled but the individual channels contain usefull data

    It seems likely that the scheme would be Specular colour for RGB and Glossness stored in the Alpha component
  • EarthQuake
    To expand a little on the map usage in general, if you have a specific way your engine expects to get a certain map, you can simply create a photoshop action to grab layer groups, throw them into the correct channels and save that map. In the same thinking, you can easily set up an action to save those same layer groups into individual files to work with 3Point Shader as well. So there shouldn't be any incompatibilities here, as its all just different arrangements of data that are exported to your specs at the push of a button. Supporting optimized studio-specific map types is a messy road we do not want to walk down.
  • Kevin Albers
    Offline / Send Message
    Kevin Albers polycounter lvl 15
  • Farfarer
    Offline / Send Message
    Farfarer Polycount Sponsor
    EarthQuake wrote: »
    To expand a little on the map usage in general, if you have a specific way your engine expects to get a certain map, you can simply create a photoshop action to grab layer groups, throw them into the correct channels and save that map. In the same thinking, you can easily set up an action to save those same layer groups into individual files to work with 3Point Shader as well. So there shouldn't be any incompatibilities here, as its all just different arrangements of data that are exported to your specs at the push of a button. Supporting optimized studio-specific map types is a messy road we do not want to walk down.
    Surely, then, you should release a company liscence for the "normal fix" part of the shader to be as some sort of modular codeblock that can be plugged into other shaders?

    That way everyone can use whatever other textures they need however they need them whilst still using your quality normals?

    The quality normals part is the important part... I'm a bit confused as to why it's being guarded as a complete shader when all the other features are just regular shader texture stuff.
  • perna
    Offline / Send Message
    perna quad damage
    Talon wrote: »
    Surely, then, you should release a company liscence for the "normal fix" part of the shader to be as some sort of modular codeblock that can be plugged into other shaders?

    We are actively and successfully supporting developers in integrating Quality Mode on their end. This has been stated such a large amount of times that we're now closing the subject. If you want your favourite software to support Quality Mode, contact them, not us.
    Talon wrote: »
    I'm a bit confused as to why it's being guarded as a complete shader

    Can't make sense of what you mean with this one. I'll be happy to address your concern if you rephrase.
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    womanz.jpg


    i'm really enjoying this shader now, that image was just taken after dicking around with fresnel a little bit, and i'm sure there are nicer results you can get. it also has no diffuse or AO, just base normals.

    now, my little "peev". i've had to stop using XN to bake my normalmaps and start using max, to get the best results out of this shader. and seriously, after importing around 3 million polies from zbrush max just runs at slideshow speed >_>

    is there a workaround for XN normalmaps instead of 3dsmax?
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 9
    Ok so would this summary be correct?

    Max provided tangent basis data to its viewport shaders using a calculation method different to the one used by the normal map baker.


    When you apply the modifier it calculates the tangent basis data using the same methods as the max baker. this is stored in the vertex data channels of the object.


    when the shader is set to quality mode it accesses this data from the vertex data channels, instead of using the incompatible data max is providing.


    if you want this to work with bakerXYZ then you write a new modifier that calculates the correct tangent basis for baker XYZ and provides the data to the shader.


    if you want nice normal maps to work in game engine X then change the way it calculates the tangent basis which it provides to its shaders?

    in other words if the tangent basis calculation is the same in both the baker and the renderer then you will be getting optimum results
  • Farfarer
    Offline / Send Message
    Farfarer Polycount Sponsor
    Ah, alright. I think I must've misunderstood what you were saying.

    I had read it that legally you wouldn't be able to use bits of that shader in another one (or is it just that legally you can't edit the specific 3Point Shader for your own uses?).
1356721
Sign In or Register to comment.