standard.chunk 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. struct SurfacesMaterialData
  2. {
  3. HIGHP_VALUE_STRUCT_DEFINE(vec3, worldPos);
  4. vec4 baseColor;
  5. vec3 worldNormal;
  6. vec3 emissive;
  7. float specularIntensity;
  8. float roughness;
  9. float metallic;
  10. float ao;
  11. // for advanced PBR
  12. vec3 worldTangent, worldBinormal;
  13. float ior;
  14. #if CC_SURFACES_LIGHTING_ANISOTROPIC
  15. float anisotropyShape;
  16. #endif
  17. #if CC_SURFACES_LIGHTING_TRANSMIT_SPECULAR || CC_SURFACES_LIGHTING_TRANSMIT_DIFFUSE
  18. vec3 outScatteringColor, inScatteringColor;
  19. vec4 transmitScatteringParams;
  20. #endif
  21. #if CC_SURFACES_LIGHTING_TRANSMIT_DIFFUSE
  22. vec4 transmitDiffuseParams;
  23. #endif
  24. #if CC_SURFACES_LIGHTING_2ND_LAYER_SPECULAR
  25. // for storage only, copied with CCSurfacesGetSurfacesMaterialData2ndSpecular
  26. // todo: use SurfacesMaterialDataPerLayer instead
  27. vec3 baseColor2ndSpecular, color2ndSpecular;
  28. float intensity2ndSpecular, roughness2ndSpecular, metallic2ndSpecular;
  29. vec3 worldNormal2ndSpecular, worldTangent2ndSpecular, worldBinormal2ndSpecular;
  30. #if CC_SURFACES_LIGHTING_ANISOTROPIC
  31. float anisotropyShape2ndSpecular;
  32. #endif
  33. float ior2ndSpecular, opacity2ndSpecular; // for multi-layer
  34. #endif
  35. #if CC_SURFACES_LIGHTING_TT
  36. vec3 baseColorTT;
  37. float ttIntensity, ttScatterCoef;
  38. #endif
  39. #if CC_SURFACES_LIGHTING_SSS
  40. vec4 sssParams;
  41. #endif
  42. };
  43. /*
  44. struct SurfacesMaterialDataPerLayer
  45. {
  46. vec3 baseColor, layerColoration;
  47. float intensity, roughness, metallic;
  48. vec3 worldNormal, worldTangent, worldBinormal;
  49. #if CC_SURFACES_LIGHTING_ANISOTROPIC
  50. float anisotropyShape;
  51. #endif
  52. float ior, opacity;
  53. }
  54. */