unlit-fs.chunk 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #include <common/lighting/brdf>
  2. // Surface
  3. void CCSurfacesFragmentGetMaterialData(inout SurfacesMaterialData surfaceData)
  4. {
  5. HIGHP_VALUE_TO_STRUCT_DEFINED(FSInput_worldPos, surfaceData.worldPos);
  6. surfaceData.baseColor = SurfacesFragmentModifyBaseColorAndTransparency();
  7. SurfacesFragmentModifySharedData(surfaceData);
  8. #if CC_USE_DEBUG_VIEW
  9. if (!IS_DEBUG_VIEW_LIGHTING_ENABLE_WITH_ALBEDO)
  10. {
  11. surfaceData.baseColor.rgb = vec3(1.0);
  12. }
  13. #endif
  14. }
  15. // Intrinsic function, make connection of material data and lighting data
  16. vec3 CCSurfacesGetDiffuseColor(in SurfacesMaterialData surfaceData)
  17. {
  18. return surfaceData.baseColor.rgb;
  19. }
  20. vec3 CCSurfacesGetSpecularColor(in SurfacesMaterialData surfaceData)
  21. {
  22. return vec3(0.0);
  23. }
  24. // Diffuse/Specular Color with BRDF lighting preparation
  25. void CCSurfacesLightingInitializeColorWithLighting(inout vec3 diffuseColorWithLighting, inout vec3 specularColorWithLighting, in SurfacesMaterialData surfaceData, in LightingIntermediateData lightingData)
  26. {
  27. diffuseColorWithLighting = CCSurfacesGetDiffuseColor(surfaceData);
  28. specularColorWithLighting = CCSurfacesGetSpecularColor(surfaceData).xyz;
  29. }
  30. // Update two colors with BRDF which depend on lights (optional)
  31. void CCSurfacesLightingCalculateColorWithLighting(inout vec3 diffuseColorWithLighting, inout vec3 specularColorWithLighting, in SurfacesMaterialData surfaceData, in LightingIntermediateData lightingData)
  32. {
  33. }
  34. #if CC_PIPELINE_TYPE == CC_PIPELINE_TYPE_DEFERRED
  35. vec4 CCSurfacesDeferredOutputBaseColor(in SurfacesMaterialData surfaceData)
  36. {
  37. return surfaceData.baseColor;
  38. }
  39. vec4 CCSurfacesDeferredOutputNormalMR(in SurfacesMaterialData surfaceData)
  40. {
  41. return vec4(float32x3_to_oct(vec3(0.0, 1.0, 0.0)), 0.0, 0.0);
  42. }
  43. vec4 CCSurfacesDeferredOutputEmissiveAO(in SurfacesMaterialData surfaceData)
  44. {
  45. return vec4(0.0, 0.0, 0.0, 1.0);
  46. }
  47. #endif
  48. // Shading
  49. vec4 CCSurfacesShading(in SurfacesMaterialData surfaceData, in LightingResult lightingResult)
  50. {
  51. vec4 color = surfaceData.baseColor;
  52. #if CC_FORWARD_ADD
  53. color.xyz = vec3(0.0);
  54. #endif
  55. return color;
  56. }
  57. // Debug view
  58. #if CC_USE_DEBUG_VIEW == CC_SURFACES_DEBUG_VIEW_SINGLE
  59. bool CCSurfacesDebugViewSurfaceData(inout vec4 color, in SurfacesMaterialData surfaceData)
  60. {
  61. bool enableMaterialAlpha = true;
  62. vec4 black = vec4(0.0, 0.0, 0.0, 1.0);
  63. float scalar;
  64. if (IS_DEBUG_VIEW_SINGLE_MODE(CC_SURFACES_DEBUG_VIEW_TRANSPARENCY)) {
  65. scalar = surfaceData.baseColor.a;
  66. color = vec4(scalar, scalar, scalar, 1.0);
  67. enableMaterialAlpha = false;
  68. }
  69. if (IS_DEBUG_VIEW_SINGLE_MODE(CC_SURFACES_DEBUG_VIEW_BASE_COLOR))
  70. color = vec4(LinearToSRGB(surfaceData.baseColor.rgb), 1.0);
  71. if (IS_DEBUG_VIEW_SINGLE_MODE(CC_SURFACES_DEBUG_VIEW_DIFFUSE_COLOR))
  72. color = vec4(LinearToSRGB(CCSurfacesGetDiffuseColor(surfaceData)), 1.0);
  73. if (IS_DEBUG_VIEW_SINGLE_MODE(CC_SURFACES_DEBUG_VIEW_SPECULAR_COLOR))
  74. color = vec4(LinearToSRGB(CCSurfacesGetSpecularColor(surfaceData)), 1.0);
  75. return enableMaterialAlpha;
  76. }
  77. #endif
  78. #include <lighting-models/lighting-flow/unlit-flow>