Default Shader Ray Trace Update

Started by WAS, December 04, 2018, 07:05:03 PM

Previous topic - Next topic

WAS

Will we ever see this in the future? It would be super fantastic to be able to create easy chrome/ray traced reflections on objects without having to have two extra default shaders or image maps to use as a reflection/metallic mask and roughness for the reflection shader plugged into a surface shader with the original default shader as albedo for the main input. The Reflection Shader already lacks a mask/reflectivity input adding an extra step as is. The Default Shader has this, just lacks ray tracing/specular intensity.

Oshyan

Matt would have to give the authoritative answer, but as I understand it the path tracer handles this differently. Reflections of Default Shader are proper reflections when path traced. I'm not sure if that can even be disabled (without setting reflectivity to 0, of course). The path tracer is basically an overall move toward more unified and realistic (PBR-like) rendering. So while it might be nice to have these things for the old render method, the real goal is to make the path tracer good enough that we can use it as the primary render method and not have to worry about hacks and limitations anymore.

- Oshyan

WAS

#2
Quote from: Oshyan on December 04, 2018, 08:18:45 PM
Matt would have to give the authoritative answer, but as I understand it the path tracer handles this differently. Reflections of Default Shader are proper reflections when path traced. I'm not sure if that can even be disabled (without setting reflectivity to 0, of course). The path tracer is basically an overall move toward more unified and realistic (PBR-like) rendering. So while it might be nice to have these things for the old render method, the real goal is to make the path tracer good enough that we can use it as the primary render method and not have to worry about hacks and limitations anymore.

- Oshyan

That's a good point, but as is, currently the Path Tracing is in it's infancy. Not meant for production or anything like that. It also doesn't work with water or glass, which are some of the main instances this comes into play with objects like houses, cars, lanterns, etc. Pretty much most general use scenarios as far as actual scene objects not natural object assets.

Good to know Path Tracing rendering appropriately. But that still lacks some control for real custom reflections like highlight intensity, and even roughness which still needs work even in the main reflection shader without displacement.

Matt

Quote from: WASasquatch on December 05, 2018, 02:28:30 AM
Good to know Path Tracing rendering appropriately. But that still lacks some control for real custom reflections like highlight intensity

The Default Shader has "specular highlight intensity" to control highlight intensity (reflection of direct lights) independently of other reflections. It's not physically correct to separate these things, but we allow it anyway. So I'm not sure what you mean.

Quote
and even roughness which still needs work even in the main reflection shader without displacement.

Roughness controls work on all reflections when path tracing. What improvements would you like to see (besides rough/blurred reflections in the standard renderer)?
Just because milk is white doesn't mean that clouds are made of milk.

WAS

The Default Shader has what now? You an only control the roughness, not intensity. Unless "reflectivity" is specular and the whole tab only applies specular (which doesn't seem to be the case, but reflection + specular minus ray tracing)

As for PT I'd have to complete more material tests. They take time and unfortunately I just found out some bad news with my relationship so not sure how much time I'll have in the future or if I should return.

Matt

Oh, that's right. Sorry, I was looking at the Reflective Shader. Well, realistically you should not be able to change the highlight intensity in a non-PBR way anyway, and since I also want to simplify shading by removing unnecessary and unrealistic parameters, the Default Shader probably won't get that separate control. My plan is for the Default Shader to be the "most PBR" of all our shaders, at least for now, and non-PBR hacks will require other shaders where non-PBR hacks already exist.
Just because milk is white doesn't mean that clouds are made of milk.

WAS

#6
Quote from: Matt on December 07, 2018, 09:35:37 AM
Oh, that's right. Sorry, I was looking at the Reflective Shader. Well, realistically you should not be able to change the highlight intensity in a non-PBR way anyway, and since I also want to simplify shading by removing unnecessary and unrealistic parameters, the Default Shader probably won't get that separate control. My plan is for the Default Shader to be the "most PBR" of all our shaders, at least for now, and non-PBR hacks will require other shaders where non-PBR hacks already exist.

What is your methodology for limiting parameters to your idea of real-world counterparts? Often we stray from this to begin with as artists for certain personal taste. I am not sure I even know of any program track record of this but creating defaults and opening up customizable options.

Does it have to do with pressure form non-traditonal technical GUI customers that seem confused about simple and often self-explanatory options? I wonder if pandering to gimmick software UX is good when the pros often use scripts and hack in just about every aspect of work in these softwares due to their inherent GUI limitations to "get you around".

Honestly with the system you use to begin with I'd like an open SDK and even more options available if even on the XML level.

I also have some confusion how a uniform PT renderer can actual deal with the subtleties of refraction of different materials without customizable options without being muddled between very polar surfaces.

For example with no highlight intensity on default shader you cannot create appropriate matt refraction without displacement, and with how TG handles objects and displacement, breaks shadowing, and changes the actual materials intended surface disp. At which point you are fighting with disp settings to middle highlights with roughness and checking under all lighting conditions for specular flecks (dots). Which is also a issue if you use roughness function/image. You'll often get undesired or explained speckles under certain lighting and angles. This all adds unnecessary to workflow just cause of a missing parameter.

Take the white gas lantern I shared. It should not be shiny. It is because I can't control the highlight intensity of the material which would be absorbing light and this reducing it's highlight refraction emission. I just gave up messing with roughness and editing the disp map I created to include fine level disps that contirbuted to speckles because of it's blending with base material disp

Matt

#7
You should control the highlight intensity by controlling the reflectivity and/or the reflection tint. You can also control the roughness - this has a big effect on the peak intensity.

One of the most important principles of PBR that I'm thinking of is making sure that the reflections of everything else in the scene are consistent with the reflection of the light sources. They should be handled consistently because in the real world a surface doesn't treat bright lights any different from light from other sources. Unless the light from other sources is polarised differently, which it can be, but this is rarely something you need to simulate to create a plausibly realistic image.

The thing you're trying to simulate, I think, should be handled fairly well by using path tracing and then adjusting the reflectivity and roughness parameters. You can also mix multiple shaders to create more complex roughness profiles (e.g. a gloss surface over a rougher surface). I'd like to see rendered examples (with path tracing) where this isn't working properly and we can discuss why that might be.

It will also help if you can post photos of the real world surface you're trying to simulate, and I can give you my opinion on how to simulate that.
Just because milk is white doesn't mean that clouds are made of milk.

Oshyan

I also think you should consider the changes that come in path tracing as part of an overall move toward more consistent and realistic shading that is closer to where the rest of the industry is headed (and in some cases already is). There are definitely limitations in Terragen's current renderer. The path tracer is a new rendering method that brings some notable benefits. It is intended that other improvements come in the future to build on or augment it. Handling of displacement will be improved, as one example. So while using displacement *now* to achieve your desired results with path tracing may be a challenge, it doesn't mean that we should not move toward this way of handling things as the long-term goal will be to resolve those kinds of issues.

Basically if you think the entire industry and the move toward PBR is misguided somehow (e.g. you want to be able to do things that are physically impossible), then that's a discussion that could be had. But a majority of the industry and our users need PBR-like shading, material handling, and realism. That's what we're aiming toward, it will just take some time to get there.

- Oshyan

Matt

#9
I think we are already pretty close. There are edge cases where every renderer looks slightly different, and parameterisation in shaders tends to vary. I also need to add GGX specular model, transparency and subsurface scattering. I'll fix any major shortcomings in shading that are brought to my attention.
Just because milk is white doesn't mean that clouds are made of milk.

AP

#10
A link that describes what the GGX specular model is.

http://www.shlyaev.com/rnd/37-cpp-category/54-ggx