未验证 提交 a6b2e376 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #17748 from higharc/rename-program-code

Rename WebGLProgram "code" to "cacheKey"
...@@ -1497,7 +1497,7 @@ function WebGLRenderer( parameters ) { ...@@ -1497,7 +1497,7 @@ function WebGLRenderer( parameters ) {
var parameters = programCache.getParameters( var parameters = programCache.getParameters(
material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );
var code = programCache.getProgramCode( material, parameters ); var programCacheKey = programCache.getProgramCacheKey( material, parameters );
var program = materialProperties.program; var program = materialProperties.program;
var programChange = true; var programChange = true;
...@@ -1507,7 +1507,7 @@ function WebGLRenderer( parameters ) { ...@@ -1507,7 +1507,7 @@ function WebGLRenderer( parameters ) {
// new material // new material
material.addEventListener( 'dispose', onMaterialDispose ); material.addEventListener( 'dispose', onMaterialDispose );
} else if ( program.code !== code ) { } else if ( program.cacheKey !== programCacheKey ) {
// changed glsl or parameters // changed glsl or parameters
releaseMaterialProgramReference( material ); releaseMaterialProgramReference( material );
...@@ -1556,10 +1556,10 @@ function WebGLRenderer( parameters ) { ...@@ -1556,10 +1556,10 @@ function WebGLRenderer( parameters ) {
material.onBeforeCompile( materialProperties.shader, _this ); material.onBeforeCompile( materialProperties.shader, _this );
// Computing code again as onBeforeCompile may have changed the shaders // Computing cache key again as onBeforeCompile may have changed the shaders
code = programCache.getProgramCode( material, parameters ); programCacheKey = programCache.getProgramCacheKey( material, parameters );
program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); program = programCache.acquireProgram( material, materialProperties.shader, parameters, programCacheKey );
materialProperties.program = program; materialProperties.program = program;
material.program = program; material.program = program;
......
...@@ -9,14 +9,14 @@ export class WebGLProgram { ...@@ -9,14 +9,14 @@ export class WebGLProgram {
constructor( constructor(
renderer: WebGLRenderer, renderer: WebGLRenderer,
extensions: WebGLExtensions, extensions: WebGLExtensions,
code: string, cacheKey: string,
material: ShaderMaterial, material: ShaderMaterial,
shader: WebGLShader, shader: WebGLShader,
parameters: WebGLRendererParameters parameters: WebGLRendererParameters
); );
id: number; id: number;
code: string; cacheKey: string; // unique identifier for this program, used for looking up compiled programs from cache.
usedTimes: number; usedTimes: number;
program: any; program: any;
vertexShader: WebGLShader; vertexShader: WebGLShader;
......
...@@ -377,7 +377,7 @@ function generateEnvMapBlendingDefine( parameters ) { ...@@ -377,7 +377,7 @@ function generateEnvMapBlendingDefine( parameters ) {
} }
function WebGLProgram( renderer, extensions, code, material, shader, parameters ) { function WebGLProgram( renderer, extensions, cacheKey, material, shader, parameters ) {
var gl = renderer.getContext(); var gl = renderer.getContext();
...@@ -884,7 +884,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters ...@@ -884,7 +884,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters
this.name = shader.name; this.name = shader.name;
this.id = programIdCount ++; this.id = programIdCount ++;
this.code = code; this.cacheKey = cacheKey;
this.usedTimes = 1; this.usedTimes = 1;
this.program = program; this.program = program;
this.vertexShader = glVertexShader; this.vertexShader = glVertexShader;
......
...@@ -2,7 +2,7 @@ import { WebGLRenderer } from './../WebGLRenderer'; ...@@ -2,7 +2,7 @@ import { WebGLRenderer } from './../WebGLRenderer';
import { WebGLProgram } from './WebGLProgram'; import { WebGLProgram } from './WebGLProgram';
import { WebGLCapabilities } from './WebGLCapabilities'; import { WebGLCapabilities } from './WebGLCapabilities';
import { WebGLExtensions } from './WebGLExtensions'; import { WebGLExtensions } from './WebGLExtensions';
import { ShaderMaterial } from './../../materials/ShaderMaterial'; import { Material } from './../../materials/Material';
export class WebGLPrograms { export class WebGLPrograms {
...@@ -11,17 +11,17 @@ export class WebGLPrograms { ...@@ -11,17 +11,17 @@ export class WebGLPrograms {
programs: WebGLProgram[]; programs: WebGLProgram[];
getParameters( getParameters(
material: ShaderMaterial, material: Material,
lights: any, lights: any,
fog: any, fog: any,
nClipPlanes: number, nClipPlanes: number,
object: any object: any
): any; ): any;
getProgramCode( material: ShaderMaterial, parameters: any ): string; getProgramCacheKey( material: Material, parameters: any ): string;
acquireProgram( acquireProgram(
material: ShaderMaterial, material: Material,
parameters: any, parameters: any,
code: string cacheKey: string
): WebGLProgram; ): WebGLProgram;
releaseProgram( program: WebGLProgram ): void; releaseProgram( program: WebGLProgram ): void;
......
...@@ -240,7 +240,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) { ...@@ -240,7 +240,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
}; };
this.getProgramCode = function ( material, parameters ) { this.getProgramCacheKey = function ( material, parameters ) {
var array = []; var array = [];
...@@ -282,18 +282,18 @@ function WebGLPrograms( renderer, extensions, capabilities ) { ...@@ -282,18 +282,18 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
}; };
this.acquireProgram = function ( material, shader, parameters, code ) { this.acquireProgram = function ( material, shader, parameters, cacheKey ) {
var program; var program;
// Check if code has been already compiled // Check if code has been already compiled
for ( var p = 0, pl = programs.length; p < pl; p ++ ) { for ( var p = 0, pl = programs.length; p < pl; p ++ ) {
var programInfo = programs[ p ]; var preexistingProgram = programs[ p ];
if ( programInfo.code === code ) { if ( preexistingProgram.cacheKey === cacheKey ) {
program = programInfo; program = preexistingProgram;
++ program.usedTimes; ++ program.usedTimes;
break; break;
...@@ -304,7 +304,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) { ...@@ -304,7 +304,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
if ( program === undefined ) { if ( program === undefined ) {
program = new WebGLProgram( renderer, extensions, code, material, shader, parameters ); program = new WebGLProgram( renderer, extensions, cacheKey, material, shader, parameters );
programs.push( program ); programs.push( program );
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册