shadowmask_pars_fragment.glsl.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. export default /* glsl */`
  2. float getShadowMask() {
  3. float shadow = 1.0;
  4. #ifdef USE_SHADOWMAP
  5. #if NUM_DIR_LIGHT_SHADOWS > 0
  6. DirectionalLightShadow directionalLight;
  7. #pragma unroll_loop_start
  8. for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
  9. directionalLight = directionalLightShadows[ i ];
  10. shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
  11. }
  12. #pragma unroll_loop_end
  13. #endif
  14. #if NUM_SPOT_LIGHT_SHADOWS > 0
  15. SpotLightShadow spotLight;
  16. #pragma unroll_loop_start
  17. for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
  18. spotLight = spotLightShadows[ i ];
  19. shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
  20. }
  21. #pragma unroll_loop_end
  22. #endif
  23. #if NUM_POINT_LIGHT_SHADOWS > 0
  24. PointLightShadow pointLight;
  25. #pragma unroll_loop_start
  26. for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
  27. pointLight = pointLightShadows[ i ];
  28. shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
  29. }
  30. #pragma unroll_loop_end
  31. #endif
  32. /*
  33. #if NUM_RECT_AREA_LIGHTS > 0
  34. // TODO (abelnation): update shadow for Area light
  35. #endif
  36. */
  37. #endif
  38. return shadow;
  39. }
  40. `;
粤ICP备19079148号