fs.chunk 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. layout(location = 0) out vec4 fragColorX;
  2. #if CC_PIPELINE_TYPE == CC_PIPELINE_TYPE_DEFERRED && !CC_FORCE_FORWARD_SHADING
  3. void main() { fragColorX = vec4(0.0, 1.0, 0.0, 1.0); }
  4. #else
  5. void main() {
  6. #if CC_DISABLE_STRUCTURE_IN_FRAGMENT_SHADER
  7. float NoL = dot(-cc_mainLitDir.xyz, FSInput_worldNormal.xyz); //trigger ubo binding
  8. vec4 color = SurfacesFragmentModifyBaseColorAndTransparency();
  9. float fogFactor = 1.0;
  10. #if CC_FORWARD_ADD
  11. color.rgb = vec3(0.0);
  12. #endif
  13. #else
  14. // Surface
  15. SurfacesMaterialData surfaceData;
  16. CCSurfacesFragmentGetMaterialData(surfaceData);
  17. // Shadow parameters
  18. vec2 shadowBias = vec2(0.0);
  19. #if CC_RECEIVE_SHADOW
  20. shadowBias = FSInput_shadowBias;
  21. #endif
  22. // Fog factor
  23. #if !CC_FORWARD_ADD
  24. float fogFactor = 1.0;
  25. #if CC_USE_FOG != CC_FOG_NONE
  26. #if !CC_USE_ACCURATE_FOG
  27. fogFactor = FSInput_fogFactor;
  28. #else
  29. CC_TRANSFER_FOG_BASE(vec4(FSInput_worldPos, 1.0), fogFactor);
  30. #endif
  31. #endif
  32. #endif
  33. // Lighting
  34. LightingResult lightingResult;
  35. CCSurfacesLighting(lightingResult, surfaceData, shadowBias);
  36. // Shading
  37. vec4 color = CCSurfacesShading(surfaceData, lightingResult);
  38. #endif
  39. #if !CC_FORWARD_ADD
  40. CC_APPLY_FOG_BASE(color, fogFactor);
  41. #endif
  42. // Color output (RGBE)
  43. fragColorX = packRGBE(color.rgb);
  44. }
  45. #endif