| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- struct LightingResult
- {
- // material-dependent lighting data
- vec3 diffuseColorWithLighting, specularColorWithLighting;
- // pure lighting
- vec3 directDiffuse, directSpecular, directGF;
- vec3 environmentDiffuse, environmentSpecular, environmentGF;
- float shadow, ao;
- vec3 lightmapColor;
- vec3 emissive;
- // advanced
- vec3 fresnel; // for transmit materials , rim or special effects
- #if CC_SURFACES_LIGHTING_USE_MULTIPLE_LAYER_BLEND
- vec3 directDiffuseSubLayers, directSpecularSubLayers;
- vec3 environmentDiffuseSubLayers, environmentSpecularSubLayers;
- #endif
- #if CC_SURFACES_LIGHTING_TRANSMIT_SPECULAR
- vec3 directTransmitSpecular, environmentTransmitSpecular;
- #endif
- #if CC_SURFACES_LIGHTING_TRANSMIT_DIFFUSE
- vec3 directTransmitDiffuse, environmentTransmitDiffuse;
- #endif
- // used for retro/internal-reflection such as TRT, Dual-Lobe Specular, Sheen...
- // multi-layer (coat) just temporary use here, it should be moved to LightingResultPerLayer member
- #if CC_SURFACES_LIGHTING_2ND_LAYER_SPECULAR
- vec3 direct2ndSpecular, environment2ndSpecular;
- vec3 specularColorWithLighting2ndSpecular;
- vec3 directGF2ndSpecular, environmentGF2ndSpecular;
- vec3 directSubLayerF, environmentSubLayerF;
- #endif
- #if CC_SURFACES_LIGHTING_TT
- vec3 directTT;
- vec3 diffuseColorWithLightingTT;
- #endif
- //vec3 scattered;
- };
- /* for multi-layer materials, should define:
- struct LightingResultPerLayer
- {
- vec3 diffuseColorWithLighting, specularColorWithLighting;
- vec3 directDiffuse, directSpecular, directGF;
- vec3 environmentDiffuse, environmentSpecular, environmentGF;
- vec3 directSubLayerF, environmentSubLayerF;
- }*/
|