diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 66e775ce6748cb3cab2df0e4cde1bb7a4affa86e..0433ea10504fc7280613c6f2e9f8c19db6e2bcaf 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -2140,6 +2140,82 @@ THREE.WebGLRenderer = function ( parameters ) { break; + case 'fs': + + _gl.uniform1f( location[ uniform.property ], value ); + + break; + + case 'v2s': + + _gl.uniform2f( location[ uniform.property ], value.x, value.y ); + + break; + + case 'v3s': + + _gl.uniform3f( location[ uniform.property ], value.x, value.y, value.z ); + + break; + + case 'v4s': + + _gl.uniform4f( location[ uniform.property ], value.x, value.y, value.z, value.w ); + + break; + + case 'cs': + + _gl.uniform3f( location[ uniform.property ], value.r, value.g, value.b ); + + break; + + case 'fsa': + + for( var i = 0; i < value.length; i ++ ) { + + _gl.uniform1f( location[ i ][ uniform.property ], value ); + + } + + break; + + case 'v2sa': + + for( var i = 0; i < value.length; i ++ ) { + + _gl.uniform2f( location[ i ][ uniform.property ], value.x, value.y ); + + } + break; + + case 'v3sa': + + for( var i = 0; i < value.length; i ++ ) { + + _gl.uniform3f( location[ i ][ uniform.property ], value.x, value.y, value.z ); + + } + break; + + case 'v4sa': + + for( var i = 0; i < value.length; i ++ ) { + + _gl.uniform4f( location[ i ][ uniform.property ], value.x, value.y, value.z, value.w ); + + } + break; + + case 'csa': + + for( var i = 0; i < value.length; i ++ ) { + + _gl.uniform3f( location[ i ][ uniform.property ], value.r, value.g, value.b ); + + } + break; + case 'iv1': // flat array of integers (JS or typed array) diff --git a/src/renderers/shaders/UniformsLib.js b/src/renderers/shaders/UniformsLib.js index 519de435b497caf49cb7987642a736f585a1c629..bfa7bfd76ddbc32bfa9496e6d7480b546e9acff1 100644 --- a/src/renderers/shaders/UniformsLib.js +++ b/src/renderers/shaders/UniformsLib.js @@ -77,25 +77,25 @@ THREE.UniformsLib = { "ambientLightColor" : { type: "fv", value: [] }, - "directionalLightDirection" : { type: "fv", value: [] }, - "directionalLightColor" : { type: "fv", value: [] }, - - "hemisphereLightDirection" : { type: "fv", value: [], array: 'hemisphereLights', property: 'direction' }, - "hemisphereLightSkyColor" : { type: "fv", value: [], array: 'hemisphereLights', property: 'skyColor' }, - "hemisphereLightGroundColor" : { type: "fv", value: [], array: 'hemisphereLights', property: 'groundColor' }, - - "pointLightColor" : { type: "fv", value: [], array: 'pointLights', property: 'color' }, - "pointLightPosition" : { type: "fv", value: [], array: 'pointLights', property: 'position' }, - "pointLightDistance" : { type: "fv1", value: [], array: 'pointLights', property: 'distance' }, - "pointLightDecay" : { type: "fv1", value: [], array: 'pointLights', property: 'decay' }, - - "spotLightColor" : { type: "fv", value: [], array: 'spotLights', property: 'color' }, - "spotLightPosition" : { type: "fv", value: [], array: 'spotLights', property: 'position' }, - "spotLightDirection" : { type: "fv", value: [], array: 'spotLights', property: 'direction' }, - "spotLightDistance" : { type: "fv1", value: [], array: 'spotLights', property: 'distance' }, - "spotLightAngleCos" : { type: "fv1", value: [], array: 'spotLights', property: 'angleCos' }, - "spotLightExponent" : { type: "fv1", value: [], array: 'spotLights', property: 'exponent' }, - "spotLightDecay" : { type: "fv1", value: [], array: 'spotLights', property: 'decay' } + "directionalLightDirection" : { type: "v3sa", value: [], name: 'hemisphereLights', property: 'direction' }, + "directionalLightColor" : { type: "csa", value: [], name: 'hemisphereLights', property: 'direction' }, + + "hemisphereLightDirection" : { type: "v3sa", value: [], name: 'hemisphereLights', property: 'direction' }, + "hemisphereLightSkyColor" : { type: "csa", value: [], name: 'hemisphereLights', property: 'skyColor' }, + "hemisphereLightGroundColor" : { type: "csa", value: [], name: 'hemisphereLights', property: 'groundColor' }, + + "pointLightColor" : { type: "csa", value: [], name: 'pointLights', property: 'color' }, + "pointLightPosition" : { type: "v3sa", value: [], name: 'pointLights', property: 'position' }, + "pointLightDistance" : { type: "fsa", value: [], name: 'pointLights', property: 'distance' }, + "pointLightDecay" : { type: "fsa", value: [], name: 'pointLights', property: 'decay' }, + + "spotLightColor" : { type: "csa", value: [], name: 'spotLights', property: 'color' }, + "spotLightPosition" : { type: "v3sa", value: [], name: 'spotLights', property: 'position' }, + "spotLightDirection" : { type: "v3sa", value: [], name: 'spotLights', property: 'direction' }, + "spotLightDistance" : { type: "fsa", value: [], name: 'spotLights', property: 'distance' }, + "spotLightAngleCos" : { type: "fsa", value: [], name: 'spotLights', property: 'angleCos' }, + "spotLightExponent" : { type: "fsa", value: [], name: 'spotLights', property: 'exponent' }, + "spotLightDecay" : { type: "fsa", value: [], name: 'spotLights', property: 'decay' } },