toon.chunk 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <common/lighting/brdf>
  2. #include <common/lighting/attenuation>
  3. #include <common/lighting/functions>
  4. bool CCSurfacesLightingEnableShadow(in float NoL)
  5. {
  6. return NoL > 0.0;
  7. }
  8. float CCSurfacesLightingCalculateDistanceAttenuation(in LightingIntermediateData lightingData, in vec4 lightSizeRangeAngle, in float lightType)
  9. {
  10. return CalculateDistanceAttenuation(lightingData.distToLightSqr, lightSizeRangeAngle.x, lightSizeRangeAngle.y, lightType);
  11. }
  12. float CCSurfacesLightingCalculateAngleAttenuation(in LightingIntermediateData lightingData, in vec4 lightSizeRangeAngle, in vec3 spotLightDir)
  13. {
  14. return CalculateAngleAttenuation(spotLightDir, lightingData.L, lightSizeRangeAngle.z);
  15. }
  16. void CCSurfacesLightingCalculateDirect(out vec3 lightingDiffuse, out vec3 lightingSpecular, in LightingIntermediateData lightingData, in vec4 lightSourceColorAndIntensity)
  17. {
  18. vec3 irradiance = lightSourceColorAndIntensity.rgb * lightSourceColorAndIntensity.w;
  19. lightingDiffuse = irradiance; // no energy conservation
  20. // punctual lighting is different from dir lighting
  21. #if CC_FORWARD_ADD
  22. float NL = 0.5 * lightingData.NoL + 0.5;
  23. lightingDiffuse *= NL;
  24. #endif
  25. float NH = 0.5 * lightingData.NoH + 0.5;
  26. float specularWeight = 1.0 - pow(lightingData.specularParam, 5.0);
  27. float specularMask = step(specularWeight + EPSILON_LOWP, NH);
  28. lightingSpecular = irradiance * specularMask;
  29. }
  30. void CCSurfacesLightingCalculateEnvironment(out vec3 lightingDiffuse, out vec3 lightingSpecular, in LightingIntermediateData lightingData, float lightIntensity)
  31. {
  32. lightingDiffuse = vec3(0.0);
  33. lightingSpecular = vec3(0.0);
  34. }
  35. #if CC_SURFACES_LIGHTING_USE_FRESNEL
  36. vec3 CCSurfaceLightingCalculateExtraFresnel(in LightingIntermediateData lightingData)
  37. {
  38. return vec3(1.0);
  39. }
  40. #endif
  41. void CCSurfaceLightingCalculateDirectFresnel(out vec3 fresnel, in LightingIntermediateData lightingData, vec3 specularColor, in vec3 environmentGF)
  42. {
  43. fresnel = vec3(1.0);
  44. }
  45. void CCSurfaceLightingCalculateEnvironmentFresnel(out vec3 integratedGF, out vec3 integratedF, in LightingIntermediateData lightingData, vec3 specularColor)
  46. {
  47. integratedF = integratedGF = vec3(1.0);
  48. }