Planned Features/Progress Report
Weapon Shader (WIP to establish all essential features before branching off to other shaders)
Character Shader
Static Shader
Entity Shader
Terrain Shader
Bug fixes
Expanded Dynamic Lighting (fix dynamic lighting problems, allowing up to 3 dynamic lights + muzzleflash)
Specular + Reflection
GGX Specular response (use physically based specular response for static and dynamic lights)
Approximated GGX Cubemap response (Use mip mapping and filtering to emulate the GGX response)
Diffuse
Lambert Diffuse (Use basic normalized dot(N,L) for low settings)
Oren-Nayar Diffuse (Use a microfacet based diffuse response, useful for rough hardsurface (Rock/Plastic)
Disney-Burley Diffuse (Use a subsurface based diffuse response, useful for rough softsurface (Cloth/Fabric)
Ambient
Emulated Ambient Bounce and Skylighting (Use SurfColor, AmbiColor, SkyColor and FloorColor to emulate bounce lighting)
Cubemapped Ambient Lighting (Use the cubemap for ambient lighting)
Matching BRDFs for lit and ambient lighting (Make lighting and materials consistent when lit and in shadow)
Extras
Sub Surface Scattering Effects (Use modified lambert shading and mipmapped normals to emulate light scattering)
Controls and Defines for enabling and disabling settings and features (use #define to control features for compatibility and performance)
Physically consistent settings and effects (Reduce the need for artist controlled lighting response)
Hi there,
Some of you might remember me from the FPSC forums a few years back. I've returned there a year ago and developed some PBR based shaders for the (now free) software, with extra features supported by the Black Ice Mod. I'm nearing my completion of them and thinking about bringing them over to Game Guru to help introduce modern graphics techniques to the engine and help teach it's users current gen practices for content creation, such as understanding reflections as a scale of roughness-smoothness.
My goal is to produce a series of shaders consistent with one another that follow basic Physically Based Rendering principles while fixing general problems with the default shaders.
These principles include Energy Conservation (As specular reflection increases, diffuse reflection decreases), Fresnel (Everything becomes 100% reflective at glancing angles), and Microsurface (a reflection's blurriness is defined by how rough or smooth the surface is)
Recommended Reading:
https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/
https://www.marmoset.co/toolbag/learn/pbr-theory
https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/
http://blog.selfshadow.com/publications/s2015-shading-course/
http://blog.selfshadow.com/publications/s2014-shading-course/
http://blog.selfshadow.com/publications/s2013-shading-course/
http://blog.selfshadow.com/publications/s2012-shading-course/
These shaders however may give you 'less control' over the lighting response using the graphics sliders and settings. However this is because such control is not physically accurate. Settings such as 'Global Specular' will become completely redundant. Control of lighting is dependant entirely on the textures and the lighting that they receive, the shaders should always react the same.
However one advantage of Game Guru's shaders I noticed was the use of '#define' to change settings in shaders to reduce the amount of shaders necessary.
I will uses this system to allow for a wide range of settings to support a range of assets, from stock assets without PBR textures to custom assets with PBR specific textures.
I will also use this system to support a range of texture authoring methods and workflows, such as supporting both f0 specularity and metalness workflows.
For further detail read here
It will also allow you to optimise your assets better as you enable or disable specular, normal mapping or cube mapping individually.
Currently I am experimenting with introducing the techniques into the stock "weapon_bone.fx" shader to understand how GG interacts with its shaders and have no real presentable progress so far, however the state of the FPSC shaders can be followed and seen at:
https://forum.thegamecreators.com/thread/219208
https://forum.thegamecreators.com/thread/217263
If something compiles on the first try. Something is terribly wrong.