Physically Based Rendering
by Pierre DragoFire Hay · in Torque 3D Professional · 03/05/2014 (4:39 pm) · 156 replies
I've been slowly reading up on this and wonder if anyone else has looked into this or done any work with it and T3D yet?
For those who don't know what Physically Base Rendering or as some call it Physically Based Shading is here's a topic over at RSI covering what is physically based rendering, this covers most aspects of PBR without getting to technical.
What is PBR or sometimes refered to as PBS or BRDF
The most trivial explanation of a PBR/PBS/BRDF (physical based renderer / physical based shader / bidirectional reflectance distribution function) is that it is the bit of shader code describing how a surface reacts to light. Generally, it is responsible for calculating the specular highlights and diffuse characteristics of the surface material. They are mathematical approximations of how surfaces react to light in the real world. In computer graphics, we try to model the physical world as accurately as possible, but we are constrained by computation. For this reason, the mathematical efficiency of BRDFs is very important. Some of the better known BRDFs - Blinn, Phong and Lambert, for instance - are well known for this reason: they are computationally inexpensive to calculate and intuitive to adjust. However they compromise efficiency for accuracy. If we concern ourselves with more expensive and more accurate models, we uncover a second layer of shading models: Oren-Nayar, Cook-Torrance, Askikhmin-Shirley, etc.
There is no single model that fits every situation, but there are some better than others. The Cook-Torrance model has been shown to be a top performer, when compared against actual acquired BRDF data. Of course, with the good comes the bad and Cook-Torrance is one of the most expensive models to compute. But for overall results, it is hard to beat. So this is our target; a nice implementation of the Cook-Torrance reflectance model. Now this maybe an issue when using Cook-Torrance model on mobiles and consoles due to hardware limitations, so it's a question of which module to use.
What's required?
Base PBR implementation consists of 3 things;
Gamma-correct rendering
[ul]Realistic rendering requires handling values much higher than display white (1.0) Before shading: light intensities, lightmaps, environment maps Shading produces highlights that affect bloom, fog, DoF, motion blur, etc. Cheap solutions exist Good tone mapping (ideally filmic)
Difference between textures and materials.
There are few fundamental distinctions between textures and materials. For example, you cannot apply a texture on a static mesh or BSP geometry. Textures have to be a part of a material. The material is what you would use to texture your environment and apply to Static Meshes.
Here are the differences between a texture and a material:
Textures is a single file, a 2d static image. It is usually a diffuse, specular or a normal map file that you would create in Photoshop or Gimp, as a tga, tiff, bmp, png file. These can be manipulated photographs, hand-painted textures or textures baked in an application such as xNormals.

Materials are made up of various textures combined together inside a Material Editor(in-engine or 3rd party editor). Materials include various textures and material expressions that creates a network of nodes. The final result is a material you can use to apply on your BSP geometry and on Static Meshes. Materials are what you see rendered in-game.
It should be noted that Specular[i] map on a texture, is connected to the [i]refractive index and as such describes a physical property. The shading model then varies this reflectance based on view angle and surface roughness. Thus the surface roughness is adjusted to create variety and specular not be varied for a given material.

A video on PBR for Artist
PBR in Substance by Allegorithmic
Here's a few examples of PBR in action.
tri-Ace Technical Demo Trailer 2011 "Physically-based Rendering"
Star Citizen Avenger PBR
Useful Links:
Pixar writing a Cook-Torrance surface Shader
Pixar writing a BRDF template
Pixar writing a BRDF template part2
Pixar CookTorrance Slim Template
Shading course 2012
Shading course 2013
Physically Based Lighting in Black-Ops
Shader code for physically based lighting
Basic Theory of Physically-Based Rendering
Paprika Render
Mitsuba Render
PBRT Org.
Unreal PBR
Houdini Shaders for physically based rendering (PBR)
D3DBook:(Lighting) Cook-Torrance
Specular BRDF Reference by Brian Karis from Epic game
Books of Interest:
Physically Based Rendering, From Theory to Implementation
ShaderX7
The RenderMan, Shading language Guide
Edit: Updated with new information and links.
For those who don't know what Physically Base Rendering or as some call it Physically Based Shading is here's a topic over at RSI covering what is physically based rendering, this covers most aspects of PBR without getting to technical.
What is PBR or sometimes refered to as PBS or BRDF
The most trivial explanation of a PBR/PBS/BRDF (physical based renderer / physical based shader / bidirectional reflectance distribution function) is that it is the bit of shader code describing how a surface reacts to light. Generally, it is responsible for calculating the specular highlights and diffuse characteristics of the surface material. They are mathematical approximations of how surfaces react to light in the real world. In computer graphics, we try to model the physical world as accurately as possible, but we are constrained by computation. For this reason, the mathematical efficiency of BRDFs is very important. Some of the better known BRDFs - Blinn, Phong and Lambert, for instance - are well known for this reason: they are computationally inexpensive to calculate and intuitive to adjust. However they compromise efficiency for accuracy. If we concern ourselves with more expensive and more accurate models, we uncover a second layer of shading models: Oren-Nayar, Cook-Torrance, Askikhmin-Shirley, etc.
There is no single model that fits every situation, but there are some better than others. The Cook-Torrance model has been shown to be a top performer, when compared against actual acquired BRDF data. Of course, with the good comes the bad and Cook-Torrance is one of the most expensive models to compute. But for overall results, it is hard to beat. So this is our target; a nice implementation of the Cook-Torrance reflectance model. Now this maybe an issue when using Cook-Torrance model on mobiles and consoles due to hardware limitations, so it's a question of which module to use.
What's required?
Base PBR implementation consists of 3 things;
Gamma-correct rendering
- Shading inputs (textures, light colors, vertex colors, etc.) naturally authored, previewed [li]and (often) stored with nonlinear (gamma) encoding
- Final frame buffer also uses nonlinear encoding
- This is done for good reasons
- [li]Perceptually uniform(ish) = efficient use of bits
- Legacy reasons (tools, file formats, hardware)
[ul]
Difference between textures and materials.
There are few fundamental distinctions between textures and materials. For example, you cannot apply a texture on a static mesh or BSP geometry. Textures have to be a part of a material. The material is what you would use to texture your environment and apply to Static Meshes.
Here are the differences between a texture and a material:
Textures is a single file, a 2d static image. It is usually a diffuse, specular or a normal map file that you would create in Photoshop or Gimp, as a tga, tiff, bmp, png file. These can be manipulated photographs, hand-painted textures or textures baked in an application such as xNormals.

Materials are made up of various textures combined together inside a Material Editor(in-engine or 3rd party editor). Materials include various textures and material expressions that creates a network of nodes. The final result is a material you can use to apply on your BSP geometry and on Static Meshes. Materials are what you see rendered in-game.
It should be noted that Specular[i] map on a texture, is connected to the [i]refractive index and as such describes a physical property. The shading model then varies this reflectance based on view angle and surface roughness. Thus the surface roughness is adjusted to create variety and specular not be varied for a given material.

A video on PBR for Artist
PBR in Substance by Allegorithmic
Here's a few examples of PBR in action.
tri-Ace Technical Demo Trailer 2011 "Physically-based Rendering"
Star Citizen Avenger PBR
Useful Links:
Pixar writing a Cook-Torrance surface Shader
Pixar writing a BRDF template
Pixar writing a BRDF template part2
Pixar CookTorrance Slim Template
Shading course 2012
Shading course 2013
Physically Based Lighting in Black-Ops
Shader code for physically based lighting
Basic Theory of Physically-Based Rendering
Paprika Render
Mitsuba Render
PBRT Org.
Unreal PBR
Houdini Shaders for physically based rendering (PBR)
D3DBook:(Lighting) Cook-Torrance
Specular BRDF Reference by Brian Karis from Epic game
Books of Interest:
Physically Based Rendering, From Theory to Implementation
ShaderX7
The RenderMan, Shading language Guide
Edit: Updated with new information and links.
#42
Well prior to implementing PBS they had a similar setup to T3D, They used a diffuse,secular and normal map. For PBS this just simply turned into albedo,metallic gloss map and normal map. The metallic gloss map used red channel for metallic gloss and the green channel for roughness. Nothing overly complicated.
06/07/2014 (2:38 am)
The game i mentioned before implemented it like so:Well prior to implementing PBS they had a similar setup to T3D, They used a diffuse,secular and normal map. For PBS this just simply turned into albedo,metallic gloss map and normal map. The metallic gloss map used red channel for metallic gloss and the green channel for roughness. Nothing overly complicated.
#43
06/07/2014 (2:45 am)
My apologies if this was posted earlier but this is a good read on it (not so much the maths behind but rather using it) docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/inde...
#44
I will try to gather all the important information of the tread.
06/07/2014 (3:19 am)
If you think assemble a working group for this, count me. I do not have much time but will help as I can.I will try to gather all the important information of the tread.
#45
This isn't as I see it something that should be done in script, yes materials could be done in script. But the core of PBR/PBS I feel would be better handled within the core colding, and have the materials in script rely on the core code to manage the maths side of things and allow developers to use scripts to add new materials as required.
I think it maybe an idea to have a core group of default materials included in the core code of the PBR/PBS as reference/parent materials.
I'm hoping to get some free times soon to spend a bit more on this and see what could be done to get the ball rolling.
06/07/2014 (4:18 am)
There are a number of reference books available on PBR/PBS, and yes there's a lot of maths involved.This isn't as I see it something that should be done in script, yes materials could be done in script. But the core of PBR/PBS I feel would be better handled within the core colding, and have the materials in script rely on the core code to manage the maths side of things and allow developers to use scripts to add new materials as required.
I think it maybe an idea to have a core group of default materials included in the core code of the PBR/PBS as reference/parent materials.
I'm hoping to get some free times soon to spend a bit more on this and see what could be done to get the ball rolling.
#46
Have a good read of the UE4 doc i posted above. It's honestly not as complex as some may think it is, the main reason it's coming to light (sorry bad pun)recently is because hardware now is very capable of running it. Dinsey have been using this in their render system for years now.
06/07/2014 (4:42 am)
Yeah but the thing is all you are really doing is swapping the classic diffuse | normal map | specular map with albedo | normal map | gloss map. The gloss map contains roughness | metallic | specular. It's very similar to the current system, just a few names change. The rest is done in the shaders. This is where a slow down could occur,the PBS shaders are more taxing, getting the render batching working well is important here.Have a good read of the UE4 doc i posted above. It's honestly not as complex as some may think it is, the main reason it's coming to light (sorry bad pun)recently is because hardware now is very capable of running it. Dinsey have been using this in their render system for years now.
#47
Original skin: i.imgur.com/n0hFHc9.png
PBS skin: i.imgur.com/oTWyVtx.png
Now firstly i have to apologize with the pics, the examples i show above the artists broke up the mesh between implementing the two procedures. Basically they broke it up in PBS to give the mesh more detail (i.e more triangles). You should be able to see the difference in regards to illumination of the textures though. The original way you can clearly see the artist is taking lighting into account.
06/07/2014 (5:26 am)
Here is an example in the differences between the old technique and PBS from the artist point of viewOriginal skin: i.imgur.com/n0hFHc9.png
PBS skin: i.imgur.com/oTWyVtx.png
Now firstly i have to apologize with the pics, the examples i show above the artists broke up the mesh between implementing the two procedures. Basically they broke it up in PBS to give the mesh more detail (i.e more triangles). You should be able to see the difference in regards to illumination of the textures though. The original way you can clearly see the artist is taking lighting into account.
#48
I know the core part could be added and worked on now but running it real time maybe an issue.
Just an idea!!
06/07/2014 (5:57 am)
All great to see this moving :) One thing about PBS, most of the time it seem to be setup on a Direct 11/Open GL 4+ or above..Would you think the renderer would have to be updated to at least that to run it successfully?I know the core part could be added and worked on now but running it real time maybe an issue.
Just an idea!!
#49
@Kory:
The big thing is the render system needs to run more efficiently regardless if PBS is added or not, now D3D11 and Gl 4+ can help with this but the GFX abstraction needs updating to reflect these new API changes found in D3D11 and GL 4+
Luis pointed out in another thread there is still 132 current "issues" logged on the official repo. Do we try and implement this or are we trying to reduce those a little first????
06/07/2014 (6:01 am)
I should also mention the game i'm talking about above, they created a new temporary material for transitioning between the two. For models they have not yet had their base texture re-done they apply a multiplier like so vec4 albedoConversion = vec4(0.05 0.511 0.555 0.73) | vec4 glossConversions = vec4(0.005 0.681 0.448 0.735) | vec4 metallicConversion = vec4(0.01 0.185 0.98 1.87). That is just an example of one texture, these where tailored to every single one (massive job!). Once everything is complete these temp materials are pretty much dumped.@Kory:
The big thing is the render system needs to run more efficiently regardless if PBS is added or not, now D3D11 and Gl 4+ can help with this but the GFX abstraction needs updating to reflect these new API changes found in D3D11 and GL 4+
Luis pointed out in another thread there is still 132 current "issues" logged on the official repo. Do we try and implement this or are we trying to reduce those a little first????
#50
I haven't gotten a chance to test it out in unity 5, UE4, or cryengine yet but I have been following it since I heard about.
I tried it out with the marmoset toolbag and from an artist view I can understand how things work, or at least whats going on. I agree so far I believe what you mention above would be the math Pierre was talking about..
Slight change of subject, how is the D3D11 and GL4+ layers going?
06/07/2014 (6:29 am)
Timmy...Sound like you have an understanding of how it works..I haven't gotten a chance to test it out in unity 5, UE4, or cryengine yet but I have been following it since I heard about.
I tried it out with the marmoset toolbag and from an artist view I can understand how things work, or at least whats going on. I agree so far I believe what you mention above would be the math Pierre was talking about..
Slight change of subject, how is the D3D11 and GL4+ layers going?
#51
06/07/2014 (6:39 am)
Yes what i mean is there is not a huge difference in how the render system is rendering these new materials, the main difference is the maths in the shaders are changing and obviously how the artists texture the objects. It's just using a more physically accurate method in calculating the lighting. This is very simplified but it's the best i can explain it (sorry i wouldn't make a very good teacher lol).
#52
06/07/2014 (7:13 am)
Just an idea what about T3D current advanced material tab..could that serve for some purpose?
#53
I'm in. Just let me know when you want to take a shot at it and we'll give it hell. I've been doing a lot of work in the material/shadergen section lately so I'm pretty familiar with it so far. Still lacking in skill with shaders themselves though so it's good to hear you're familiar with implementing it.
I'm thinking we create new maps for albedo, pbr_spec, and roughness. I assume the normal maps are the same between PBR and non-PBR? So, we can leave that. I'm just thinking we could make a PBR flag in the material properties that kicks it down a different path when ProcessedShaderMaterial::_determineFeatures() is called and uses the PBR shaders instead of the regular ones. This way you could have PBR and non-PBR materials in the same scene. Also, you could build a material that's capable of both PBR and non-PBR and make a global option to turn PBR off for performance reasons.
06/07/2014 (10:37 am)
@ TimmyI'm in. Just let me know when you want to take a shot at it and we'll give it hell. I've been doing a lot of work in the material/shadergen section lately so I'm pretty familiar with it so far. Still lacking in skill with shaders themselves though so it's good to hear you're familiar with implementing it.
I'm thinking we create new maps for albedo, pbr_spec, and roughness. I assume the normal maps are the same between PBR and non-PBR? So, we can leave that. I'm just thinking we could make a PBR flag in the material properties that kicks it down a different path when ProcessedShaderMaterial::_determineFeatures() is called and uses the PBR shaders instead of the regular ones. This way you could have PBR and non-PBR materials in the same scene. Also, you could build a material that's capable of both PBR and non-PBR and make a global option to turn PBR off for performance reasons.
#54
Things to note. Albedo is flat color with no shading. If not using ssao, you still will have to add the AO and possibly cavity as separate maps (though these could easily just require 1 channel each).
Quixel probably won't work with you since T3d is small and open source, but they have gotten their values from scanning real world materials. So if you can mimic their maps values and outputs to get the same end result, it would make us artists jobs easier, as we wouldn't have to figure out a whole separate library just for t3d that X values = Y output.
06/07/2014 (2:15 pm)
Things to note. Albedo is flat color with no shading. If not using ssao, you still will have to add the AO and possibly cavity as separate maps (though these could easily just require 1 channel each).
Quixel probably won't work with you since T3d is small and open source, but they have gotten their values from scanning real world materials. So if you can mimic their maps values and outputs to get the same end result, it would make us artists jobs easier, as we wouldn't have to figure out a whole separate library just for t3d that X values = Y output.
#55
It's a bit more involved than you may think. The documents that some have been looking at good, but only touch on the topic a bit.
e.g.
One texture requires the following basic parameters;
Diffuse (Boolean)
Normal (Boolean)
Specular (Boolean)
Glossiness (Boolean)
Roughness (Boolean)
Metallic (Boolean)
Ambient Occlusion (Boolean)
Height (Boolean)
Lighting Intensity (Float 1)
Lighting Angle (Float 1)
Diffuse AO Intensity (Float 1)
Luminosity (Float 1)
Contrast (Float 1)
Hue Shift (Float 1)
Saturation (Float 1)
Normal Intensity (Float 1)
Normal Shift (Integer 1)
AO Spreading (Float 1)
Roughness (Float 1)
And Advanced Parameters would include the following;
For Metal;
Scratches (Float 1)
Deep Rust (Float 1)
Rust Drips (Float 1)
Bullets Impacts Amount (Float 1)
Bullets Impacts Size (Float 1)
Bullets Impact Cracks (Float 1)
Metal Color (Float 3)
Deep Rust Color (Float 3)
Rust Color (Float 3)
For a Concrete Tile;
Tile X (Integer 1)
Tile Y (Integer 1)
Disorder (Float 1)
Edge Warp (Float 1)
Water Level (Float 1)
Snow (Float 1)
Ice (Float 1)
Ground Color (Float 3)
Tiles Color (Float 3)
For Fabric;
Pattern Scale (Integer 1)
Fabric Pattern Scale (Integer 1)
Creases Intensity (Float 1)
Creases Frequency (Integer 1)
Crease Axis (Integer 1)
Stains Type (Integer 1)
Stains Amount (Integer 1)
Stains Size (Float 1)
Stains Anisotropy (Float 1)
Stains Anisotropy Angle (Float 1)
Color_01 (Float 3)
Color_02 (Float 3)
Color_03 (Float 3)
Color_04 (Float 3)
For Wood;
Knots (Float 1)
Fibers (Float 1)
Color (Float 3)
Some of these parameters could be script controlled, but the underlying code for each of these would be set in core, as it wouldn't change and shouldn't changed once coded without major effect being caused.
But as you can see from the above 4 examples there is more to PBR/PBS then what you think, the core basic parameters are standard for all materials, but the advanced parameters aren't, some materials may only use 3 advanced parameters, while others could go as high as 20, depending on what it is will govern how many advanced parameters maybe used/required.
As for an image/texture you require the following image maps;
Diffuse
Normal
Specular
Glossiness
Roughness
Metallic
Ambient Occlusion
Height
So Andrew as you can see it's a little more than just adding a a few more maps.
I'm not the best programmer out there, and haven't been coding for years, so slowly picking it all back up slowly, but even I know that this is a requirement for the future of not just T3D, but also the other versions of Torque.
But I would say it's just a little bit of code changes in the shader side of things, the shader is part of PBR/PBS. But the main part is the way the engine with PBR/PBS handles the maps based on the material parameter setting given to each map used on a model.
06/07/2014 (3:35 pm)
@Andrew and othersIt's a bit more involved than you may think. The documents that some have been looking at good, but only touch on the topic a bit.
e.g.
One texture requires the following basic parameters;
Diffuse (Boolean)
Normal (Boolean)
Specular (Boolean)
Glossiness (Boolean)
Roughness (Boolean)
Metallic (Boolean)
Ambient Occlusion (Boolean)
Height (Boolean)
Lighting Intensity (Float 1)
Lighting Angle (Float 1)
Diffuse AO Intensity (Float 1)
Luminosity (Float 1)
Contrast (Float 1)
Hue Shift (Float 1)
Saturation (Float 1)
Normal Intensity (Float 1)
Normal Shift (Integer 1)
AO Spreading (Float 1)
Roughness (Float 1)
And Advanced Parameters would include the following;
For Metal;
Scratches (Float 1)
Deep Rust (Float 1)
Rust Drips (Float 1)
Bullets Impacts Amount (Float 1)
Bullets Impacts Size (Float 1)
Bullets Impact Cracks (Float 1)
Metal Color (Float 3)
Deep Rust Color (Float 3)
Rust Color (Float 3)
For a Concrete Tile;
Tile X (Integer 1)
Tile Y (Integer 1)
Disorder (Float 1)
Edge Warp (Float 1)
Water Level (Float 1)
Snow (Float 1)
Ice (Float 1)
Ground Color (Float 3)
Tiles Color (Float 3)
For Fabric;
Pattern Scale (Integer 1)
Fabric Pattern Scale (Integer 1)
Creases Intensity (Float 1)
Creases Frequency (Integer 1)
Crease Axis (Integer 1)
Stains Type (Integer 1)
Stains Amount (Integer 1)
Stains Size (Float 1)
Stains Anisotropy (Float 1)
Stains Anisotropy Angle (Float 1)
Color_01 (Float 3)
Color_02 (Float 3)
Color_03 (Float 3)
Color_04 (Float 3)
For Wood;
Knots (Float 1)
Fibers (Float 1)
Color (Float 3)
Some of these parameters could be script controlled, but the underlying code for each of these would be set in core, as it wouldn't change and shouldn't changed once coded without major effect being caused.
But as you can see from the above 4 examples there is more to PBR/PBS then what you think, the core basic parameters are standard for all materials, but the advanced parameters aren't, some materials may only use 3 advanced parameters, while others could go as high as 20, depending on what it is will govern how many advanced parameters maybe used/required.
As for an image/texture you require the following image maps;
Diffuse
Normal
Specular
Glossiness
Roughness
Metallic
Ambient Occlusion
Height
So Andrew as you can see it's a little more than just adding a a few more maps.
I'm not the best programmer out there, and haven't been coding for years, so slowly picking it all back up slowly, but even I know that this is a requirement for the future of not just T3D, but also the other versions of Torque.
But I would say it's just a little bit of code changes in the shader side of things, the shader is part of PBR/PBS. But the main part is the way the engine with PBR/PBS handles the maps based on the material parameter setting given to each map used on a model.
#56
Cloud Imperium Games Corporation and Roberts Space Industries announced in November they were adding PBR to their Game Star Citizen, only this week have they released an pre-alpha test that has PBR included in it.
Now this is some @7 months later, and was done with the help of who knows how many programmers internally and with the of Crytek developer support.
here's a video showing what they have managed to do with CryENGINE with PBR integrated.
06/07/2014 (4:05 pm)
Here's an example of how long it would take to get PBR/PBS done;Cloud Imperium Games Corporation and Roberts Space Industries announced in November they were adding PBR to their Game Star Citizen, only this week have they released an pre-alpha test that has PBR included in it.
Now this is some @7 months later, and was done with the help of who knows how many programmers internally and with the of Crytek developer support.
here's a video showing what they have managed to do with CryENGINE with PBR integrated.
#57
PBR/PBS are what I would call a layer2 piece of code, where DirectX and OpenGL is a Layer3 or even Layer4 piece of coding. Using Networking terms here.
06/07/2014 (4:38 pm)
Another key thing to remember is PBR/PBS isn't dependent on DirectX or OpenGL, as PBR/PBS tells these renders how to render the texture maps. PBR/PBS are what I would call a layer2 piece of code, where DirectX and OpenGL is a Layer3 or even Layer4 piece of coding. Using Networking terms here.
#58
I'm not saying it's ONLY that. What I'm saying is all the implementations I've seen have only used 4 maps for PBR. Albedo, Specular/Metallic, Normal, and Roughness. The properties you're listing are numerical values passed to the different shaders. They're not actual textures. We could use datablocks for those PBR properties and have it selected in the material. If the properties are unused by that particular PBR material then it wouldn't be passed to the shader. Shadergen is actually pretty smart and works quite well when you start playing with it, this wouldn't be too hard to accomplish.
I'm not underestimating the project but I also don't see how it could really take that long if Timmy has a solid understanding of the shaders involved. Keep in mind when it takes them 7 months to make a release they are producing a commercial product and have to test it in every way shape and form. Not to mention document it. It needs to be near perfect before they release. That doesn't mean it actually took a team of programmers 7 months of programming to produce a working build.
06/07/2014 (5:48 pm)
Quote:So Andrew as you can see it's a little more than just adding a a few more maps.
I'm not saying it's ONLY that. What I'm saying is all the implementations I've seen have only used 4 maps for PBR. Albedo, Specular/Metallic, Normal, and Roughness. The properties you're listing are numerical values passed to the different shaders. They're not actual textures. We could use datablocks for those PBR properties and have it selected in the material. If the properties are unused by that particular PBR material then it wouldn't be passed to the shader. Shadergen is actually pretty smart and works quite well when you start playing with it, this wouldn't be too hard to accomplish.
I'm not underestimating the project but I also don't see how it could really take that long if Timmy has a solid understanding of the shaders involved. Keep in mind when it takes them 7 months to make a release they are producing a commercial product and have to test it in every way shape and form. Not to mention document it. It needs to be near perfect before they release. That doesn't mean it actually took a team of programmers 7 months of programming to produce a working build.
#59
I think I understand what your saying..The full complete implementation of PBS system.
If I'm not mistaken Andrew and timmy would be doing a basic setup of the system..Pretty much what is required..
To my understanding your above explanation, would be what would be under the PBS material > advanced materials.
Lets say for example if you had a model with casual clothing and not much metal to the map, then alot of the maps or options list above wouldn't have any values.
06/07/2014 (6:04 pm)
pierreI think I understand what your saying..The full complete implementation of PBS system.
If I'm not mistaken Andrew and timmy would be doing a basic setup of the system..Pretty much what is required..
To my understanding your above explanation, would be what would be under the PBS material > advanced materials.
Lets say for example if you had a model with casual clothing and not much metal to the map, then alot of the maps or options list above wouldn't have any values.
#60
@ Kory
Yeah, those are pretty much the basics of PBR. The question we should be asking ourselves now is if we want a Basic or Advanced implementation of PBR in T3D. We should also get the rest of the Steering Committee involved in this and maybe release it in, 3.7 maybe? If PBR is actually going to be implemented of course, however, if Andrew takes on the challenge I have no doubt that it can be finished by him.
06/07/2014 (7:02 pm)
O.o, is this an implementation of PBR/PBS?@ Kory
Yeah, those are pretty much the basics of PBR. The question we should be asking ourselves now is if we want a Basic or Advanced implementation of PBR in T3D. We should also get the rest of the Steering Committee involved in this and maybe release it in, 3.7 maybe? If PBR is actually going to be implemented of course, however, if Andrew takes on the challenge I have no doubt that it can be finished by him.
Azaezel
One thing I don't yet have personal experience with is altering variables provided by a secondary object, such as any additional data that would need packing into lights.