lighting-result.chunk 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. struct LightingResult
  2. {
  3. // material-dependent lighting data
  4. vec3 diffuseColorWithLighting, specularColorWithLighting;
  5. // pure lighting
  6. vec3 directDiffuse, directSpecular, directGF;
  7. vec3 environmentDiffuse, environmentSpecular, environmentGF;
  8. float shadow, ao;
  9. vec3 lightmapColor;
  10. vec3 emissive;
  11. // advanced
  12. vec3 fresnel; // for transmit materials , rim or special effects
  13. #if CC_SURFACES_LIGHTING_USE_MULTIPLE_LAYER_BLEND
  14. vec3 directDiffuseSubLayers, directSpecularSubLayers;
  15. vec3 environmentDiffuseSubLayers, environmentSpecularSubLayers;
  16. #endif
  17. #if CC_SURFACES_LIGHTING_TRANSMIT_SPECULAR
  18. vec3 directTransmitSpecular, environmentTransmitSpecular;
  19. #endif
  20. #if CC_SURFACES_LIGHTING_TRANSMIT_DIFFUSE
  21. vec3 directTransmitDiffuse, environmentTransmitDiffuse;
  22. #endif
  23. // used for retro/internal-reflection such as TRT, Dual-Lobe Specular, Sheen...
  24. // multi-layer (coat) just temporary use here, it should be moved to LightingResultPerLayer member
  25. #if CC_SURFACES_LIGHTING_2ND_LAYER_SPECULAR
  26. vec3 direct2ndSpecular, environment2ndSpecular;
  27. vec3 specularColorWithLighting2ndSpecular;
  28. vec3 directGF2ndSpecular, environmentGF2ndSpecular;
  29. vec3 directSubLayerF, environmentSubLayerF;
  30. #endif
  31. #if CC_SURFACES_LIGHTING_TT
  32. vec3 directTT;
  33. vec3 diffuseColorWithLightingTT;
  34. #endif
  35. //vec3 scattered;
  36. };
  37. /* for multi-layer materials, should define:
  38. struct LightingResultPerLayer
  39. {
  40. vec3 diffuseColorWithLighting, specularColorWithLighting;
  41. vec3 directDiffuse, directSpecular, directGF;
  42. vec3 environmentDiffuse, environmentSpecular, environmentGF;
  43. vec3 directSubLayerF, environmentSubLayerF;
  44. }*/