Skip to content

Commit

Permalink
WebGLPrograms: Improve performance of getParameters().
Browse files Browse the repository at this point in the history
  • Loading branch information
Mugen87 committed Jun 16, 2020
1 parent 92ad8c5 commit 924a6d3
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/renderers/WebGLRenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -1539,7 +1539,7 @@ function WebGLRenderer( parameters ) {
program = programCache.acquireProgram( parameters, programCacheKey );

materialProperties.program = program;
materialProperties.uniforms = parameters.uniforms;
materialProperties.uniforms = programCache.getUniforms( material );
materialProperties.outputEncoding = parameters.outputEncoding;
material.program = program;

Expand Down
1 change: 1 addition & 0 deletions src/renderers/webgl/WebGLPrograms.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export class WebGLPrograms {
object: any
): any;
getProgramCacheKey( parameters: any ): string;
getUniforms( material: Material ): object;
acquireProgram(
parameters: any,
cacheKey: string
Expand Down
24 changes: 21 additions & 3 deletions src/renderers/webgl/WebGLPrograms.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ function WebGLPrograms( renderer, extensions, capabilities ) {

shaderobject = {
name: material.name || material.type,
uniforms: UniformsUtils.clone( shader.uniforms ),
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader
};
Expand All @@ -72,7 +71,6 @@ function WebGLPrograms( renderer, extensions, capabilities ) {

shaderobject = {
name: material.name || material.type,
uniforms: material.uniforms,
vertexShader: material.vertexShader,
fragmentShader: material.fragmentShader
};
Expand Down Expand Up @@ -180,7 +178,6 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
shaderID: shaderID,
shaderName: shaderobject.name,

uniforms: shaderobject.uniforms,
vertexShader: shaderobject.vertexShader,
fragmentShader: shaderobject.fragmentShader,
defines: material.defines,
Expand Down Expand Up @@ -342,6 +339,26 @@ function WebGLPrograms( renderer, extensions, capabilities ) {

}

function getUniforms( material ) {

const shaderID = shaderIDs[ material.type ];
let uniforms;

if ( shaderID ) {

const shader = ShaderLib[ shaderID ];
uniforms = UniformsUtils.clone( shader.uniforms );

} else {

uniforms = material.uniforms;

}

return uniforms;

}

function acquireProgram( parameters, cacheKey ) {

let program;
Expand Down Expand Up @@ -392,6 +409,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
return {
getParameters: getParameters,
getProgramCacheKey: getProgramCacheKey,
getUniforms: getUniforms,
acquireProgram: acquireProgram,
releaseProgram: releaseProgram,
// Exposed for resource monitoring & error feedback via renderer.info:
Expand Down

0 comments on commit 924a6d3

Please sign in to comment.