IESSpotLightNode.js 757 B

1234567891011121314151617181920212223242526272829303132333435
  1. import SpotLightNode from './SpotLightNode.js';
  2. import LightsNode from './LightsNode.js';
  3. import { acos, texture, vec2 } from '../shadernode/ShaderNodeElements.js';
  4. import IESSpotLight from '../../lights/IESSpotLight.js';
  5. class IESSpotLightNode extends SpotLightNode {
  6. getSpotAttenuation( angleCosine ) {
  7. const iesMap = this.light.iesMap;
  8. let spotAttenuation = null;
  9. if ( iesMap && iesMap.isTexture === true ) {
  10. const angle = acos( angleCosine ).mul( 1.0 / Math.PI );
  11. spotAttenuation = texture( iesMap, vec2( angle, 0 ), 0 ).r;
  12. } else {
  13. spotAttenuation = super.getSpotAttenuation( angleCosine );
  14. }
  15. return spotAttenuation;
  16. }
  17. }
  18. LightsNode.setReference( IESSpotLight, IESSpotLightNode );
  19. export default IESSpotLightNode;