Announcement

Collapse
No announcement yet.

UE4 still does not have any proper way to do tinted glass

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    an update:

    all my test results for creating a Glass Material using the Translucency Type Ray Tracing can be found here:
    https://forums.unrealengine.com/deve...sue-how-to-fix

    Leave a comment:


  • replied
    This is a very interesting topic. I am trying to work this out - step by step and I hope to get all your help. So here we go, please see the video below.



    video: https://youtu.be/azGdQYGiq5g

    Download UE4 Project File:
    https://mega.nz/#!3g9QkAyI!z6VhQH_3x...KHMcQEHEPIaQEo


    Thank you so much for any of your help, hints, tips & suggestions.

    Happy pixeling,
    Bernhard

    Leave a comment:


  • replied
    Originally posted by Manoel.Neto View Post
    From what I understand, you want tinted glass to be rendered in a single pass, without resorting to using sceneTexture. To do tinted glass, you need to modulate the pixels behind the glass by a RGB value and add the reflected light/environment from the glass surface. There is no GPU blending mode that can do color modulation and color addition at the same time, therefore your request is impossible at the hardware level(*): you need to do it in two blend passes (first modulate, then additive).

    (*) There are ways to do it on certain hardware: raytracing (RTX only) and tile-based mobile GPUs actually allow in-shader blending. There's also an optional feature on some shader model 5.1 GPUs that allows in-shader blending, at a cost.
    So? I don't really care/mind about how many blend passes it takes. I mean for example Unreal already does one draw call per every material slot on a mesh. That's like saying it's impossible to have meshes with multiple materials on GPU because you can't do multiple materials in a single draw call. It may not need to be so efficient that it happens on the GPU shader level under the hood, that's not the priority here. Priority is just acceptable workflow from user experience standpoint.

    Leave a comment:


  • replied
    Originally posted by Manoel.Neto View Post
    There is no GPU blending mode that can do color modulation and color addition at the same time, therefore your request is impossible at the hardware level(*): you need to do it in two blend passes (first modulate, then additive).
    https://docs.microsoft.com/en-us/win...color-blending

    Leave a comment:


  • replied
    From what I understand, you want tinted glass to be rendered in a single pass, without resorting to using sceneTexture. To do tinted glass, you need to modulate the pixels behind the glass by a RGB value and add the reflected light/environment from the glass surface. There is no GPU blending mode that can do color modulation and color addition at the same time, therefore your request is impossible at the hardware level(*): you need to do it in two blend passes (first modulate, then additive).

    (*) There are ways to do it on certain hardware: raytracing (RTX only) and tile-based mobile GPUs actually allow in-shader blending. There's also an optional feature on some shader model 5.1 GPUs that allows in-shader blending, at a cost.

    Leave a comment:


  • replied
    Originally posted by Rawalanche View Post

    It seems you are far more concerned with the semantics of the posts in this thread rather than the substance of it. I am interested in the actual opposite. A few posts above, I've posted a video with the practical example of limitations of all the aforementioned approaches. While I may have failed to be precise in my formulations, I highly doubt most people would be unable to understand the general point I was trying to make.

    Your posts seem to be intended to do anything except actually breaking down or solving the issue. I am far more interested in practical solutions to the issues illustrated by the video.
    Nah, I was just trying to explain why I think that what you are asking for (or what I believed you were asking for) isn't quite as easy to implement or even necessarily as useful as you thought, and that you're likely to be disappointed if you expect it to be implemented soon as a native engine feature. I also explained in some detail how the other approaches you dismissed might actually be able to accomplish quite a few very specific things that you asked for and claimed were impossible.

    Past that, maybe you're right, and most people other than me do understand what you're saying without difficulty, and I'm wrong for thinking you could have stated the problem more clearly. And maybe what you're asking for actually is something really easy to accomplish. At this point I'm clearly unable to find an adequate solution, whether that's because I'm misunderstanding what you're asking for, or for some other reason. It seems like I may not be alone, simply given that other people in the thread seem to be having similar difficulties, but I'd really be thrilled if someone comes along and implements a new shading model that solves all of your problems.

    Leave a comment:


  • replied
    Originally posted by amoser View Post

    Yes, and I quoted it verbatim.

    And I don't doubt that you meant something closer to the following



    None of that was actually present in your post at all, which is why I used it as an example of how you could add a bit of clarity to make sure people understand your intentions.



    Again, this is what you wrote (emphasis mine):



    You're saying that you actually meant something a bit different, which is perfectly fine. As I noted from the beginning, I wasn't certain what you actually meant.

    But I still believe it serves as a good example of why it could be beneficial to spend a bit more time clarifying what you're asking in the first place, to make sure that what you write actually reflects how you want people to interpret it. If nothing else, it'll at least lessen the sense that you're deliberately antagonizing everyone who tries to actually answer your questions. I imagine most people don't like to take the time to respond to something, only to be insulted for not responding to something else different that wasn't actually stated or asked.
    It seems you are far more concerned with the semantics of the posts in this thread rather than the substance of it. I am interested in the actual opposite. A few posts above, I've posted a video with the practical example of limitations of all the aforementioned approaches. While I may have failed to be precise in my formulations, I highly doubt most people would be unable to understand the general point I was trying to make.

    Your posts seem to be intended to do anything except actually breaking down or solving the issue. I am far more interested in practical solutions to the issues illustrated by the video.

    Leave a comment:


  • replied
    Originally posted by Rawalanche View Post
    Did you actually read my post?
    Yes, and I quoted it verbatim.

    And I don't doubt that you meant something closer to the following

    Originally posted by Rawalanche View Post
    I precisely explained what I meant by complete shading model. Complete in terms of being able to cover all !basic! materials, not complete in terms of being able to simulate them to a degree offline renderers do.
    None of that was actually present in your post at all, which is why I used it as an example of how you could add a bit of clarity to make sure people understand your intentions.

    Here you are accusing me of not proof reading my posts and not making any sense while you clearly ignored a response to what you are currently calling out (again). So again, just so that you do not miss it. By a complete shading model I mean ability to at least to some degree create all the common real world materials - NOT ability to simulate them on the highest level possible (which would cover specific BRDFs for things like velvet). Basically something like VrayMTL, CoronaMTL or Blender's PrincipledBSDF, while they don't cover all the niche BRDFs/BSDFs, they do cover vast majority of basic real world materials.
    Again, this is what you wrote (emphasis mine):

    Originally posted by Rawalanche View Post
    What I want is something that IS technically possible, to be a one click solution instead of complex set of steps. So that I, as an artist, can spend my time focusing on more important stuff. This just comes down to me being able to trust Unreal's shading model to handle all the possible real world materials. Currently it can handle all of them except tinted glass, which means it's incomplete. All I am requesting is that it's a complete shading model.
    You're saying that you actually meant something a bit different, which is perfectly fine. As I noted from the beginning, I wasn't certain what you actually meant.

    But I still believe it serves as a good example of why it could be beneficial to spend a bit more time clarifying what you're asking in the first place, to make sure that what you write actually reflects how you want people to interpret it. If nothing else, it'll at least lessen the sense that you're deliberately antagonizing everyone who tries to actually answer your questions. I imagine most people don't like to take the time to respond to something, only to be insulted for not responding to something else different that wasn't actually stated or asked.

    Leave a comment:


  • replied
    Originally posted by MostHost LA View Post
    Ray Traced Translucency

    Ray Traced Translucency (RTT) accurately represents glass and liquid materials with physically correct reflections, absorption, and refraction on transparent surfaces.
    For additional information, see Ray Tracing Settings.

    So a according to you, the example in the documentation with a translucent door that also has a dark tint is Impossible.
    Hum... I wonder how the Unreal team went and did that... they may just be magic.
    Care to show me the example you have in mind? Dark tint is easily possible, obviously, since all that's required is reduction of the opacity parameter. I am talking about colored tint. With saturated color such as green or red.

    I've found identical formulation to one you've posted on this page: https://docs.unrealengine.com/en-US/...ing/index.html But I am failing to see any example of colored glass.

    Leave a comment:


  • replied
    Ray Traced Translucency

    Ray Traced Translucency (RTT) accurately represents glass and liquid materials with physically correct reflections, absorption, and refraction on transparent surfaces.
    For additional information, see Ray Tracing Settings.

    So a according to you, the example in the documentation with a translucent door that also has a dark tint is Impossible.
    Hum... I wonder how the Unreal team went and did that... they may just be magic.

    Leave a comment:


  • replied
    Alright, since it's getting really tiresome repeating my point, here is visual example:

    The use cases are very simple. For example car tail lights made of red glass which covers some glass elements inside, such as light bulbs. Or for example a fire truck light casing, which is red and blue and has glass bulb inside. Or just a glass balcony railing which has brown tint, behind which is a glass balcony door. These are all very common use cases which require tinted glass through which you need to see other glass:

    3 solutions:
    A. Regular Surface TranslucencyVolume glass without any tint
    B. SceneColor based tinted glass
    C. Double surface glass composed from outer shell Surface TranslucencyVolume material and inner shell modulate material

    A: Does work with ray tracing, does display translucent materials behind, requires no workarounds
    B: Does not work with ray tracing, does not display translucent materials being even in rasterized mode
    C: Dos not work with ray tracing, does work with rasterizer but requires workaround on geometry level. Serves as a proof the effect can be achieved with rasterizers.

    As you can see, no solution here is really a win scenario. The reason I made this thread was hoping that this can be done simpler.
    Last edited by Rawalanche; 10-18-2019, 05:32 AM.

    Leave a comment:


  • replied
    Originally posted by amoser View Post

    Really? I don't see it on the "done for 4.24 list" but maybe you're referring to something else I'm missing. Would be really neat if true, especially if SSR takes it into account as well.
    This is seriously weird. I swear I saw it there, including screenshots. I may be wrong but I am 95% sure it was there. Maybe it was taken down for some reasons. There were even screenshots of UE4 shaderballs with aniso effect.


    Originally posted by amoser View Post
    Having a single diffuse cloth model with two extra parameters is by no means more than sufficient in lots of real-world cases. It doesn't have any relevance at all to things like silk, velvet, etc.

    More to the point, though, what you said (and what I was responding to) is the claim that you need to be "able to trust Unreal's shading model to handle all the possible real world materials" and following that up by saying that somehow tinted glass is, somehow, the only missing piece. That seems wildly different from any of the things you're saying now. I don't know if you're just being needlessly hyperbolic or if you're just not really paying attention to what you're actually writing, but it's difficult to follow the logic and that's been the case throughout most of what you've written in this thread. I think if you take a bit more time to proofread your posts you'll probably be able to get your ideas across much more efficiently.

    I suspect that you'll also find that people are more receptive to your ideas in general if you show that you've put a little bit more thought into them. A lot of what you've written in this thread comes across as just a bunch of disjointed sweeping generalizations and insults, with a few specific but also frequently incorrect details thrown in. I think most people just want to help out, but that's challenging when one has to jump through a bunch of hoops just to figure out what you're actually asking about.
    Did you actually read my post? I precisely explained what I meant by complete shading model. Complete in terms of being able to cover all !basic! materials, not complete in terms of being able to simulate them to a degree offline renderers do. Here you are accusing me of not proof reading my posts and not making any sense while you clearly ignored a response to what you are currently calling out (again). So again, just so that you do not miss it. By a complete shading model I mean ability to at least to some degree create all the common real world materials - NOT ability to simulate them on the highest level possible (which would cover specific BRDFs for things like velvet). Basically something like VrayMTL, CoronaMTL or Blender's PrincipledBSDF, while they don't cover all the niche BRDFs/BSDFs, they do cover vast majority of basic real world materials.

    Originally posted by amoser View Post
    Support for overlapping geometry is the sole reason you gave in your first post or why using the scene color input node is not a good solution, though. And doing it that way is both more efficient and more flexible than an additional shading model would be.
    There's a difference. Using SceneColor ignores any translucent materials after first surface hit and does not work with ray tracing. Again, if you read my post precisely, I propose NOT to ignore following translucent materials, but just ignore stacking of the modulate component of the material (several color multiplications along the depth). Or in other words, you'd still see surface properties of the materials behind, just not correctly stacked volumetric properties (modulated color). Yes, it would still be problematic in some cases, but it would solve majority of them).
    Last edited by Rawalanche; 10-18-2019, 05:34 AM.

    Leave a comment:


  • replied
    Originally posted by Rawalanche View Post

    Anisotropy is supported since 4.24, check trello board.
    Really? I don't see it on the "done for 4.24 list" but maybe you're referring to something else I'm missing. Would be really neat if true, especially if SSR takes it into account as well.

    UE4 has cloth shading model as well as fuzzy shading node. Sure it's not a physically based simulation of cloth backscattering, but it's more than sufficient in context of realtime engine.
    Having a single diffuse cloth model with two extra parameters is by no means more than sufficient in lots of real-world cases. It doesn't have any relevance at all to things like silk, velvet, etc.

    More to the point, though, what you said (and what I was responding to) is the claim that you need to be "able to trust Unreal's shading model to handle all the possible real world materials" and following that up by saying that somehow tinted glass is, somehow, the only missing piece. That seems wildly different from any of the things you're saying now. I don't know if you're just being needlessly hyperbolic or if you're just not really paying attention to what you're actually writing, but it's difficult to follow the logic and that's been the case throughout most of what you've written in this thread. I think if you take a bit more time to proofread your posts you'll probably be able to get your ideas across much more efficiently.

    I suspect that you'll also find that people are more receptive to your ideas in general if you show that you've put a little bit more thought into them. A lot of what you've written in this thread comes across as just a bunch of disjointed sweeping generalizations and insults, with a few specific but also frequently incorrect details thrown in. I think most people just want to help out, but that's challenging when one has to jump through a bunch of hoops just to figure out what you're actually asking about.

    One more thing:
    It would not need to allow for overlapping tinted translucent geometry, at least perhaps not the initial implementation. There are many cases where you need tinted refractive material, but the cases where you need two tinted refractive materials overlapping would be rather rare. It would still be sufficient to at least cover 90%+ of the cases than none at all. It's not like Unreal doesn't have other limitations when it comes to shading.
    Support for overlapping geometry is the sole reason you gave in your first post or why using the scene color input node is not a good solution, though. And doing it that way is both more efficient and more flexible than an additional shading model would be.

    Leave a comment:


  • replied
    Originally posted by Rawalanche View Post

    In that particular constellation of the parameters, only emissive component would be multiplied, while others, such as specular, would be overlayed on top.
    This is not a modulate blend. Again, modulate blend takes color, and multiplies it over existing color. There is no specular or emissive. By the time it gets blended, it is just a color. By saying that giving you modulate blend on lit translucency would magically fix tinted glass for you, you are further confusing anyone, who might peek into the thread.

    There are two practical ways to tackle the problem.

    1) Use Blend Add(Alpha composite) blending mode, and divide specular lighting by opacity. It works out of the box, needing only 3 lines of shader code to change. Breaks at low opacity values and instead of correct tint, gives you mix of background color and transmission color. Better than nothing, but still pretty terrible.

    2) Use Dual blend. That is what you are expecting, Specular lighting would be added and transmission(emissive, basecolor, w.e.) would be multiplied but there are performance and platform implications.

    In both cases, distortion would still leave any objects with transmittance behind first one, undistorted.


    So the essence of two pages here:

    UE4 needs dual blend blending mode support added for lit and unlit translucency and separate translucency.

    Until it is done, transmissive shading in UE4 will remain being triumph of raindance and workarounds.

    TLDR: Use Scene Color Material Expression.

    Last edited by Deathrey; 10-17-2019, 08:58 PM.

    Leave a comment:


  • replied
    Originally posted by amoser View Post
    I'm genuinely not sure what this means, because what you seem to be saying isn't even slightly true. There are infinitely many (literally) BSDF functions that appear in the real world that aren't supported. Even incredibly common things like anisotropic highlights and Oren-Nayar diffuse reflectance, and the vast majority of cloth materials can't be achieved at all (Oren-Nayar shading is technically in the engine, but currently requires modifying shaders to make it available. Even then, it only works correctly with direct light).
    Anisotropy is supported since 4.24, check trello board. UE4 has cloth shading model as well as fuzzy shading node. Sure it's not a physically based simulation of cloth backscattering, but it's more than sufficient in context of realtime engine. I mean if you see all the archviz work that's been already done with the engine, cloth shading is definitely not an issue. What is though, is the tinted translucency/refraction workflow. Even if we accept the workarounds mentioned above, we still don't have raytracing compatibility. Complete, in a context of what I said, was supposed to mean just ability to create majority of common materials out of the box. Tinted refractive materials fall into the category of "common" since it's hard to shade even such a basic things like vehicles or interior accessories without them.

    One more thing:
    It would not need to allow for overlapping tinted translucent geometry, at least perhaps not the initial implementation. There are many cases where you need tinted refractive material, but the cases where you need two tinted refractive materials overlapping would be rather rare. It would still be sufficient to at least cover 90%+ of the cases than none at all. It's not like Unreal doesn't have other limitations when it comes to shading.
    Last edited by Rawalanche; 10-17-2019, 04:23 AM.

    Leave a comment:

Working...
X