|
@@ -4072,7 +4072,21 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( shaderID ) {
|
|
|
|
|
|
- setMaterialShaders( material, THREE.ShaderLib[ shaderID ] );
|
|
|
+ var shader = THREE.ShaderLib[ shaderID ];
|
|
|
+
|
|
|
+ material.__webglShader = {
|
|
|
+ uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
|
|
|
+ vertexShader: shader.vertexShader,
|
|
|
+ fragmentShader: shader.fragmentShader
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ material.__webglShader = {
|
|
|
+ uniforms: material.uniforms,
|
|
|
+ vertexShader: material.vertexShader,
|
|
|
+ fragmentShader: material.fragmentShader
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -4240,22 +4254,14 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
material.uniformsList = [];
|
|
|
|
|
|
- for ( u in material.uniforms ) {
|
|
|
+ for ( u in material.__webglShader.uniforms ) {
|
|
|
|
|
|
- material.uniformsList.push( [ material.uniforms[ u ], u ] );
|
|
|
+ material.uniformsList.push( [ material.__webglShader.uniforms[ u ], u ] );
|
|
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
- function setMaterialShaders( material, shaders ) {
|
|
|
-
|
|
|
- material.uniforms = THREE.UniformsUtils.clone( shaders.uniforms );
|
|
|
- material.vertexShader = shaders.vertexShader;
|
|
|
- material.fragmentShader = shaders.fragmentShader;
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
function setProgram( camera, lights, fog, material, object ) {
|
|
|
|
|
|
_usedTextureUnits = 0;
|
|
@@ -4284,7 +4290,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
var program = material.program,
|
|
|
p_uniforms = program.uniforms,
|
|
|
- m_uniforms = material.uniforms;
|
|
|
+ m_uniforms = material.__webglShader.uniforms;
|
|
|
|
|
|
if ( program.id !== _currentProgram ) {
|
|
|
|