Home Technical Talk

Physically based rendering in games

24567

Replies

  • marks
    Offline / Send Message
    marks greentooth
    FYI these 2 particular talks from the SIGGRAPH 2012 shading course I've found particularly useful:

    http://blog.selfshadow.com/publications/s2012-shading-course/

    · Calibrating Lighting and Materials in Far Cry 3
    http://blog.selfshadow.com/publications/s2012-shading-course/mcauley/s2012_pbs_farcry3_slides_v2.pdf

    · Background: Physics and Math of Shading
    http://blog.selfshadow.com/publications/s2012-shading-course/hoffman/s2012_pbs_physics_math_slides.pdf
  • Farfarer
    Cheers Mark.

    I had a bash at this myself in Unity; http://www.farfarer.com/temp/equirectangular1.png

    I'm using equirectangular maps (these things) for the environments 'cause then you can use trilinear filtering to blur it and go from glossy-matte by using the mip maps. I've also managed to get it to create the equirectangular maps from dynamically rendered cubemaps (realtime IBL) \o/

    I have to do that 'cause cube maps in Unity don't get properly blended in lower mips so you end up with seams at the edges that get more noticeable as you drop down each level :/

    Needs more work, but it's a start.
  • marks
    Offline / Send Message
    marks greentooth
    Farfarer wrote: »
    Cubemaps in Unity don't get properly blended so you end up with seams at the edges as you use lower mips :/

    Yeah, D3D cubemap blending sucks. You want to use an offline tool to pre-filter the cubemap mips before you even get to the game bro. Kinda rains on your realtime IBL parade though...
  • Farfarer
    Doesn't matter 'cause I don't use them now, it's converted to an equirectangular map that's then used for actual IBL.
  • RogelioD
    Offline / Send Message
    RogelioD polycounter lvl 12
    Couple questions for anyone who can answer:

    I noticed the names Base Color, and Roughness in the material set-up... does this mean UE4 uses a Physically based shader model?

    Along the same lines of a PBS, is reflection per object baked right into the material and handled along with the specular? *drool*

    What the heck is that "Metallic" imput? Can anyone shed some light on that?

    In order to get a realistic BDRF result do we still need to use a Fresnel, or is that also built right into the material? Or i not built in, is there going to be a "slider" for it?

    Anyone know if it will be possible to make reflections blurry or is that also baked into the definition of the material?

    Thanks :)
  • RogelioD
    Offline / Send Message
    RogelioD polycounter lvl 12
    Thanks for the clarification! Any idea where I can find that new Siggraph presentation? (or is it the one that was posted above?)

    I know a little about PBR from what I've picked up from here and there. I think that Fox Engine presentation really helped with understanding. It's great to see it catching on now as I do think it really kicks things up a lot.
  • iniside
  • Yury
    Offline / Send Message
    Yury polycounter lvl 8
    Looks like that texturing will be much easier than it is right now with more realistic end results in game engines that are using this new shading. I like PBS already :)
  • Computron
    Offline / Send Message
    Computron polycounter lvl 7
    Is metallic a boolean value, or can it be a mix/per-pixel? Wouldn't the fresnel curve be derived per pixel from (What used to be) called the specualar texture, specifically its luminosity? (Whats that called again, f0?) I thought that was supposed to be a big part of PBS.
  • RogelioD
    Offline / Send Message
    RogelioD polycounter lvl 12
    from this (http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_slides.pdf) it looks like it can be any value from 0/1. Slide 19 really helped me understand it better.
  • Money
    Offline / Send Message
    Money polycounter lvl 8
    Computron wrote: »
    Is metallic a boolean value, or can it be a mix/per-pixel? Wouldn't the fresnel curve be derived per pixel from (What used to be) called the specualar texture, specifically its luminosity? (Whats that called again, f0?) I thought that was supposed to be a big part of PBS.

    Did you mean on this? Page 10 from course notes
    A question I have received countless times is: “Is Metallic binary?,” to which I’d originally explain
    the subtleties of mixed or layered materials. I have since learned that it’s best to just say “Yes!” The
    reason is that artists at the beginning were reluctant to set parameters to absolutes; very commonly I
    would find metals with Metallic values of 0.8. Material layers—discussed next—should be the way to
    describe 99% of cases where Metallic would not be either 0 or 1.

    Edit: Beaten.
  • RogelioD
    Offline / Send Message
    RogelioD polycounter lvl 12
    speaking of PBR... saw this on Marmoset Co.'s facebook page that updated just now...

    1150667_398686470231642_1956037389_o.jpg

    901142_398686916898264_1647033768_o.jpg
  • marks
    Offline / Send Message
    marks greentooth
    I think he means there won't be a specular intensity value/texture/input. You gotta get that reflectance value from somewhere though so I am curious where it'll be derived from instead.

    e/ also GGX is a BRDF, not just a specular term
  • iniside
    Offline / Send Message
    iniside polycounter lvl 6
    Ace-Angel wrote: »
    I get it, Specular term is not correct, yadda yadda yadda, but we won't be getting rid of it in our life time, or even never, when the consumer (every generation) finds a new 'portable' device that has about the same power as that of a PS2 and sticks to it, not to mention non-hero assets, it's becomes very costly to what amounts even static cubemaps for something that no one will look at.
    Well several things:
    1. UE4 is still in development. Even based on public information you can see they changing lots of things.
    2.In general, PBR is simpler. I dunno how you would find contructing hacked materials that suppose to looks nice be cheaper than simple PBR material that consist of 4 nodes ?

    To be perfectly honest, we just got rid of it. You are pretty much not supposed to touch it. And it got removed from material inputs.
    If you don't want reflection, you just set rougness to 1. But in PBR you can't get rid of reflection entirely, because every surface have some reflective properties.
    And if you worry about perfomance of static reflections. They are cheap, and appiled automatically to all objects within probe influence radius.
    I don't see any reason to fake reflections inside materials. Only thing you get is more complicated material.
    Simply speaking, PBR is entire rendering pipeline. You just can't get rid of it, by using old techniques. You are either using it, or switch to engine that do not use it.
    Then why do they show the GGX Specular term as their new hotness? Unless I'm looking at a different PDF file, it shows that UE4 will have a Specular which is Towridge/GGX and is part of the asset.
    It's probably not good answer, but I can't go into details of UE4, we can discuss about publicly avaiable informations and other PBR pipelines ;)

    But yes, GGX is part of BRDF. I just think Specular term attached to is simply misleading.
  • Computron
    Offline / Send Message
    Computron polycounter lvl 7
    iniside wrote: »
    But yes, GGX is part of BRDF. I just think Specular term attached to is simply misleading.

    Lol, and the transition to PBR/S is supposed to make things simpler.

    I cant wait until all dust settles from the transition onto something with which I can use to learn PBS texturing. Marmoset 2 looks very enticing.
  • leleuxart
    Offline / Send Message
    leleuxart polycounter lvl 10
    Computron wrote: »
    I cant wait until all dust settles from the transition onto something with which I can use to learn PBS texturing. Marmoset 2 looks very enticing.

    I'm with you. All of this talk and seeing all of the new games using it makes me want to learn and be caught up since so many engines are switching. I think CE3.5 will be using something like a PBR(from what I've seen in Crytek's presentation on Crysis 3), so really we have UE4, Marmoset 2, and CE3.5. Just gotta wait for which one comes out first
  • Drew++
    Offline / Send Message
    Drew++ polycounter lvl 14
    marks wrote: »
    I think he means there won't be a specular intensity value/texture/input. You gotta get that reflectance value from somewhere though so I am curious where it'll be derived from instead.

    Correct about the Specular...
    Specular color/reflectance or whatever you want to call it is an RGB value. In some engines it's a texture, in some just a RGB constant. In simple terms, it controls brightness / strength of the highlight, reflection color, and Fresnel. More specifically, it actually controls the Fresnel and 'Fresnel Color', which gives your specular it's color and brightness.

    Here are some Photoshop swatches for specular color I threw together. Several different metallic and non-metallic.
    https://dl.dropboxusercontent.com/u/8510078/Colors%20for%20Physically%20Based%20Shading.aco
    e/ also GGX is a BRDF, not just a specular term
    Actually, GGX/Trowbridge-Reitz is part of the BRDF/Microfacet, as what is called the "D term", which stands for the distribution term.

    I implemented the GGX/Trowbridge-Reitz into my viewport shader, which should be released soon!
    ggx_pbs.png
    I just need some assets/meshes to test it with :P
  • marks
    Offline / Send Message
    marks greentooth
    You're right, I shouldn't try and post about technical stuff after 12 hours at work haha!

    So, am I right in thinking that (widely speaking) most assets won't transfer directly from one PBS shader/pipeline to another? Being PBS doesn't necessarily mean cross compatibility -> it really depends on what your scales for reflectance amount and roughness are set to (eg what the upper and lower bounds of those scales actually correlate to in real-world terms). It strikes me as being a similar issue to cross-incompatibility of tangent-space normalmaps due to tangent basis differentiation. The content is very similar, but not quite right if not authored specifically for that renderer.
  • iniside
    Offline / Send Message
    iniside polycounter lvl 6
    I think it still will be easier to transfer some assets, than it is now, as some general rules apply anyway. Color should be transferable easily, as it is.. just color.
    Roughness might be trickier, but if you use roughness only as mask for value (by lerping two scalars, with roughness texture as mask) it should trasnfer nicely.

    Problem is with rest, like metallic, specular, normals, as those might not be even in material inputs on diffrent engines.
  • Computron
    Offline / Send Message
    Computron polycounter lvl 7
    marks wrote: »
    You're right, I shouldn't try and post about technical stuff after 12 hours at work haha!

    So, am I right in thinking that (widely speaking) most assets won't transfer directly from one PBS shader/pipeline to another? Being PBS doesn't necessarily mean cross compatibility -> it really depends on what your scales for reflectance amount and roughness are set to (eg what the upper and lower bounds of those scales actually correlate to in real-world terms). It strikes me as being a similar issue to cross-incompatibility of tangent-space normalmaps due to tangent basis differentiation. The content is very similar, but not quite right if not authored specifically for that renderer.

    I suppose this could be solved if every source texture was authored at high bit depths that could represent values that correlate to real-world physical values for the surface properties they represent, (which could be further specified in the metadata, like how the texture data is parameterized) and then have something like Cryengine3's RC handle the engine and platform specific conversions. So what we need is a physically based source file convention.

    Also, the use of world space normal coupled with handplane has practically solved the cross-compatibility problem for normal maps.
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    Been on vacation, clearing up a few questions I saw, hope this helps.
    iniside wrote: »
    No. Reflection are realtime (SSR), and captures from probes. There won't Specular term in future anymore. (as you can find on new Siggraph presentation).

    Actually there is a specular term, analytic specular is still used for light sources placed by the artist. Specular response and reflection both use the same inputs, so if a surface is rough it will have a broad dim highlight as well as a blurry reflections. If it's not rough it will have a bright sharp highlight with sharp reflections.

    Computron wrote: »
    Is metallic a boolean value, or can it be a mix/per-pixel? Wouldn't the fresnel curve be derived per pixel from (What used to be) called the specualar texture, specifically its luminosity? (Whats that called again, f0?) I thought that was supposed to be a big part of PBS.

    Metallic can be any value from 0-1 but should be binary in most cases. In reality surfaces are either metal or they are not, and you get gradiations by having a non metal lay on top of a metal and create a see-through multi-layer appearance. But that's where you can start fudging the metalness in a shader to get the look you're going for.
  • Zpanzer
    Offline / Send Message
    Zpanzer polycounter lvl 8
    JordanW wrote: »
    Metallic can be any value from 0-1 but should be binary in most cases. In reality surfaces are either metal or they are not, and you get gradiations by having a non metal lay on top of a metal and create a see-through multi-layer appearance. But that's where you can start fudging the metalness in a shader to get the look you're going for.

    Is it possible to control the roughness(People working with offline renders such as V-Ray or Mental Ray will refer to this as the glosiness) with maps?
    I've learned, from working with V-Ray for the past years that believable metal shaders often requires you to have some kind of variance in both the roughness and reflection values(grunge maps are awesome at this).
    If so, then it's actually pretty cool how people who've been working with PBS in offline renders can bring new tricks to the game industry since the shading pipelines becomes very similar.
  • iniside
    Offline / Send Message
    iniside polycounter lvl 6
    Zpanzer wrote: »
    Is it possible to control the roughness(People working with offline renders such as V-Ray or Mental Ray will refer to this as the glosiness) with maps?
    I've learned, from working with V-Ray for the past years that believable metal shaders often requires you to have some kind of variance in both the roughness and reflection values(grunge maps are awesome at this).
    If so, then it's actually pretty cool how people who've been working with PBS in offline renders can bring new tricks to the game industry since the shading pipelines becomes very similar.
    Yes. But I personally wouldn't recomend it. It's better to use roughness texture as intermediate thing.
    What I mean is to plug roughness map into LERP and lerp between two scalar values.
  • Drew++
    Offline / Send Message
    Drew++ polycounter lvl 14
    Zpanzer wrote: »
    Is it possible to control the roughness(People working with offline renders such as V-Ray or Mental Ray will refer to this as the glosiness) with maps?
    I've learned, from working with V-Ray for the past years that believable metal shaders often requires you to have some kind of variance in both the roughness and reflection values(grunge maps are awesome at this).
    If so, then it's actually pretty cool how people who've been working with PBS in offline renders can bring new tricks to the game industry since the shading pipelines becomes very similar.

    Absolutely! This essentially is what most artists call "gloss map" currently... Same thing really. In the case of UE4, 0.0 is perfect reflection and 1.0 is roughest. A roughness map is needed in most cases. I think I or someone should explain how PBS works ;)
  • Hotrails
    The last video is really interesting.

    Since i'm new to this things i have a few questions:
    Let's say i want to create something made of metal, what should i do to set up a gold material?
    I know that some PBR engines for metals the albedo/diffuse should be black (non existing) because tha colour was given by its "specular color" (i don't know if it's the correct term), for gold it would be some yellowish tint... is it true even for UE4?

    Another thing, in what parameter should i insert the index of refraction value or its equivalent for Fresnel?
  • iniside
    Offline / Send Message
    iniside polycounter lvl 6
    For gold you need to setup 4 values:
    1. Color - something that look like gold.
    2. Metallic - 1.
    3. Roughness - depnds on how reflective you want it to be.
    4. Normal Map - Providing DETAIL normal maps for every surface is essential, to get good looking reflections.
    So you just need one texture.

    Doesn't treat it as 100% recipe, as everything might change in future.
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    tbh,

    i just want a PBL engine for us to play with already. being turned down for freelance jobs because of lack of experience with PBL is starting to really piss me off.
  • Zpanzer
    Offline / Send Message
    Zpanzer polycounter lvl 8
    tbh,

    i just want a PBL engine for us to play with already. being turned down for freelance jobs because of lack of experience with PBL is starting to really piss me off.

    You could always power up an off line renderer like Mental Ray, however I suspect that people won't recognize it as PBS/PBL experience when it comes to game art. :P
  • radiancef0rge
    Offline / Send Message
    radiancef0rge ngon master
    have you tried the kostas shader http://www.kostas.se/?p=30? its somewhere to start at the very least.
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    yeah i've had a play around, and it's certainly very nice! but as we all know, viewport shaders for max/maya are nowhere near equivalent to actual in-engine stuff. the way the shaders react to global illumination, scene lights etc. is all different.
  • moose
    Offline / Send Message
    moose polycount sponsor
    Hotrails wrote: »
    The last video is really interesting.

    Since i'm new to this things i have a few questions:
    Let's say i want to create something made of metal, what should i do to set up a gold material?
    I know that some PBR engines for metals the albedo/diffuse should be black (non existing) because tha colour was given by its "specular color" (i don't know if it's the correct term), for gold it would be some yellowish tint... is it true even for UE4?

    Another thing, in what parameter should i insert the index of refraction value or its equivalent for Fresnel?

    in ue4, as you increase the metallic value closer to 1, the base color darkens, and the reflection takes on the color of your base. When Metallic is 1, your Base is essentially black just by modifying that value. The quality, and amount of reflection/basecolor you see then is a product of the roughness.

    can kinda see it on slide 19 of http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_slides.pdf

    that sphere has a reflection environment however, which prevents you from seeing the full effect. However you study the highlight from left to right, will see the effect.
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    so if i'm understanding that correctly moose, in extremely simplified math it's something like this for metals?

    (<diffuse> * (1 - <metal value>) + <env map> * <metal value>) = <diffuse colour>
    <diffuse colour> + (<diffuse colour> * 1.5) = <final colour>

    so as you increase the metalness, the diffuse colour goes closer to zero, and has an environment map added in. it's then added to itself by "whatever value" to give it that conductive material appearance (where the specular colour is close to itself and rarely white).

    i realise that's a gross simplification, i'm just trying to get my head round it :)
  • artquest
    Offline / Send Message
    artquest polycounter lvl 13
    so if i'm understanding that correctly moose, in extremely simplified math it's something like this for metals?

    (<diffuse> * (1 - <metal value>) + <env map> * <metal value>) = <diffuse colour>
    <diffuse colour> + (<diffuse colour> * 1.5) = <final colour>

    so as you increase the metalness, the diffuse colour goes closer to zero, and has an environment map added in. it's then added to itself by "whatever value" to give it that conductive material appearance (where the specular colour is close to itself and rarely white).

    i realise that's a gross simplification, i'm just trying to get my head round it :)

    According to one of the PDF's in the self shadow blog, Metals are so dense according to physics that no light enters the surface at all. Hence it's diffuse color is black or "0."

    Something new to my brain is that diffuse color can be thought of as a type of sub surface scattering. When light enters the material and is scattered around inside the rays that bounce back out of the surface in multiple vectors are what produce the "diffuse" component.


    http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_slides.pdf Page 23!

    All this new PBR stuff is amazing imo.
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    for sure, it is. but it can't be brought down completely to zero mathematically, because zero is black, and you still need some form of colour tint to define the colour of the metal, right?
  • radiancef0rge
    Offline / Send Message
    radiancef0rge ngon master
    Yes and no, gold, bronze etc hypothetically it can all be done with grayscale, for example thats what is done in second son.

    I saw someone around he did a PBS system for unreal in the custom lighting slot cant remember where it is though
  • RogelioD
    Offline / Send Message
    RogelioD polycounter lvl 12
    I believe this is what you are referring to.

    http://www.polycount.com/forum/showpost.php?p=1787202&postcount=10
    lpcstr: I mean the built in Phong shading. Here is a custom lighting shader and an example of how to use it.

    http://dl.dropbox.com/u/48657892/CustomLighting.upk

    A quick rundown on the parameters.

    Roughness: This is the equivalent of "glossiness", but unlike Phong, bigger number = more rough. The range of this is parameter is technically (0, +inf), but most common materials are going to be in the rage of (0, 1].

    Diffuse: This is the diffuse albedo, pretty self explanatory. Be careful to use realistic values. Very few materials have an diffuse albedo > 0.6ish.

    Specular: This is the specular albedo, equivalent to the amount of light that gets reflected at normal incidence. This value can be calculated based off of the material's index of refraction. Example:

    Glass IOR = ~1.54

    Specular albedo = ((1.54 - 1) / (1.54 + 1))^2 = ~0.0452

    You may find some more insights by reading this blog: http://seblagarde.wordpress.com/2011...lighting-mode/
  • Peris
    Offline / Send Message
    Peris polycounter lvl 17
    I made a shader using the same concept of "metalness" that UE4 has a little while back in unity:

    metalness.jpg

    In my version, the material starts turning into metal as soon as the "metalness" map (or specular, or substance or however you want to call it) is higher than 0.5. The higher the metalness value, the darker the diffuse, and the more the spec and reflection starts to become tinted by the diffuse color.

    Any value below 0.5 essentially represents a dielectric material (plastics, stone, etc).

    I really love the PBR way of working, no more hacking around with sliders and special shaders to create a material, everything can be easily defined with the right maps.

    I'm still working on this shader and will probably eventually release it :).
  • Hotrails
    moose wrote: »
    in ue4, as you increase the metallic value closer to 1, the base color darkens, and the reflection takes on the color of your base. When Metallic is 1, your Base is essentially black just by modifying that value. The quality, and amount of reflection/basecolor you see then is a product of the roughness.

    can kinda see it on slide 19 of http://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_slides.pdf

    that sphere has a reflection environment however, which prevents you from seeing the full effect. However you study the highlight from left to right, will see the effect.

    Thanks, that clear up a lot of things. So it's the engine itself that manage pretty much everithing, i must just determine if my material is dielectric or metallic and its roughness.
    Seems really straightforward.
    (also... i cant' wait to see some papers about "Inflitrator", it is mind blowing :) ).

    I think that the "physically based rendering" argument needs its own topic imo, there are a lot of engines that work in that way nowdays: UE4, Cryengine, Fox engine, Luminous engine, The Order:1886 and Killzone:SF proprietary engines and many many more.

    @Peris
    Great job and your example is really easy to understand too.
  • EarthQuake
    marks wrote: »
    You're right, I shouldn't try and post about technical stuff after 12 hours at work haha!

    So, am I right in thinking that (widely speaking) most assets won't transfer directly from one PBS shader/pipeline to another? Being PBS doesn't necessarily mean cross compatibility -> it really depends on what your scales for reflectance amount and roughness are set to (eg what the upper and lower bounds of those scales actually correlate to in real-world terms). It strikes me as being a similar issue to cross-incompatibility of tangent-space normalmaps due to tangent basis differentiation. The content is very similar, but not quite right if not authored specifically for that renderer.

    Pretty much, from what I understand physically based rendering is more of a concept than any specific hard set of rules. So, depending on who exactly is writing the shaders and their interpenetration of what is physically accurate (no game engine is really physically accurate, unless you have raytraced radiosity/reflections/refractions/sub-surface scattering/etc), you're going to get some variance. Then you have issues with real physical range vs the range you're actually likely to use in a game engine, which may sway what certain shader values correspond to.

    Though the basic concepts will apply with pretty much any implementation, and the source content will probably transfer better than you would expect, with maybe some slight value tweaking in your source maps or in the specific shader values.

    The whole PBR thing isn't just about shaders though, its a method for authoring content more than anything (using real measured values, or at the least logical values for various texture inputs). If managed well, a games worth of content set up for a PBR system should hold up better to say, a mid-dev engine swap, simply because the content will be created in a very consistent manner. Better than a game's worth of content where artists are just fudging the values, that is.
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    EarthQuake wrote: »
    Pretty much, from what I understand physically based rendering is more of a concept than any specific hard set of rules. So, depending on who exactly is writing the shaders and their interpenetration of what is physically accurate (no game engine is really physically accurate, unless you have raytraced radiosity/reflections/refractions/sub-surface scattering/etc), you're going to get some variance. Then you have issues with real physical range vs the range you're actually likely to use in a game engine, which may sway what certain shader values correspond to.

    Though the basic concepts will apply with pretty much any implementation, and the source content will probably transfer better than you would expect, with maybe some slight value tweaking in your source maps or in the specific shader values.

    The whole PBR thing isn't just about shaders though, its a method for authoring content more than anything (using real measured values, or at the least logical values for various texture inputs). If managed well, a games worth of content set up for a PBR system should hold up better to say, a mid-dev engine swap, simply because the content will be created in a very consistent manner. Better than a game's worth of content where artists are just fudging the values, that is.

    Those are all great points, another benefit of PBR workflow is if the materials are "correct" they should hold up and look correct under all lighting situations. You know your chrome ball or your asphalt will look like chrome or asphalt in any lighting situation.
  • EarthQuake
    JordanW wrote: »
    Those are all great points, another benefit of PBR workflow is if the materials are "correct" they should hold up and look correct under all lighting situations. You know your chrome ball or your asphalt will look like chrome or asphalt in any lighting situation.

    Yeah, absolutely. Artists authoring content by eye-balling in anything other than totally neutral lighting can make consistency in various lighting conditions a real bitch.
  • marks
    Offline / Send Message
    marks greentooth
    It's a similar kind of plus point to the "more popular now" material pipelines of using materials referenced from a core global library, such as in the recent UE4 video and the 1886 talk from SIGGRAPH -> another method of maintaining consistency amongst larger teams of artists.

    It also means that you need to be careful with material usage though, as they *cant* be fudged for specific instances, so when you get that request of "uhhh this material in X instance would look better with more spec response" from a lighting artist, you can't exactly just go change it for that one instance.
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    that's where you need to make the choice as a developer (team) whether to use PBR or the current shader solution...

    if you're using PBR, everything will look "real", what you're talking about there, where something might look "better" is an artistic thing... it's a conscientious decision to make something less real for an artistic purpose.

    you can still be artistic while making things react to light in a realistic way, you just have to think differently. you could go with a "different" set of assets (ie. your game isn't set in a currently realistic setting, it's sci fi or fantasy based or whatever) but still reacts to lights in a realistic manner. you could be unrealistic with the lighting itself to achieve the results you want.

    i think the big thing about this workflow as previously mentioned is consistency among the entire art pipeline. if the materials are all pre-defined, and the artists are just choosing how to mix those materials for any given asset, it makes the entire process more streamlined and cohesive.
  • osman
    Offline / Send Message
    osman polycounter lvl 18
    Yeah, and lights reacting realistically in your engine doesn't stop you from going stylized, sci fi, grungy, etc. Look at pixar.
  • almighty_gir
    Offline / Send Message
    almighty_gir ngon master
    yeah that's what i was getting at...

    fucking words man, what's wrong with me?!
  • artquest
    Offline / Send Message
    artquest polycounter lvl 13
    for sure, it is. but it can't be brought down completely to zero mathematically, because zero is black, and you still need some form of colour tint to define the colour of the metal, right?

    I believe metal color is defined purely by the Reflection map in a PBR setup and diffuse is indeed set to 0.
  • RogelioD
    Offline / Send Message
    RogelioD polycounter lvl 12
    artquest wrote: »
    I believe metal color is defined purely by the Reflection map in a PBR setup and diffuse is indeed set to 0.

    How is that possible? How would you make Chrome differ from say, Gold? Doesn't gold have a slightly dark brwn diffuse color with a gold reflection/spec?
  • JordanW
    Offline / Send Message
    JordanW polycounter lvl 19
    artquest wrote: »
    I believe metal color is defined purely by the Reflection map in a PBR setup and diffuse is indeed set to 0.

    Reflection color (in UE4) is defined by base color. Metalness blends between base color being used as diffuse color for non-metallic surfaces, or reflection color for metallic surfaces.
  • Drew++
    Offline / Send Message
    Drew++ polycounter lvl 14
    RogelioD wrote: »
    How is that possible? How would you make Chrome differ from say, Gold? Doesn't gold have a slightly dark brwn diffuse color with a gold reflection/spec?

    Nope! In Physically based rendering, most metallic materials should have a pure black diffuse. Literally the brightness and color of your reflection is defined by what we call "substance" or "specular map"; This is called "energy conserving". You can see it at the very beginning of my video. When I darken the specular color, it shows more diffuse. :)

    Edit: You can also see when I have a pure white, metallic specular, changing the diffuse color has no effect but you can see it give a blue hue to a gold, so that's why you need the "metallic" part.

    [ame="http://www.youtube.com/watch?v=HfveFvdp5jA&quot;]Physically Based Lighting Shader - 3DS Max [WIP] - YouTube[/ame]
  • RogelioD
    Offline / Send Message
    RogelioD polycounter lvl 12
    Drew++ wrote: »
    Nope! In Physically based rendering, most metallic materials should have a pure black diffuse. Literally the brightness and color of your reflection is defined by what we call "substance" or "specular map"; This is called "energy conserving". You can see it at the very beginning of my video. When I darken the specular color, it shows more diffuse. :) You can also see when I have a pure white, metallic specular, changing the diffuse color has no effect but you can see it give a blue hue to a gold, so that's why you need the "metallic" part.

    Physically Based Lighting Shader - 3DS Max [WIP] - YouTube

    Oh wow, that really cleared it up for me! Thank you!
24567
Sign In or Register to comment.