提交 6039072d 编写于 作者: M Mr.doob

WebGLProgram: Removed redundant code. See #7440.

上级 04ffa8bf
......@@ -1383,7 +1383,7 @@ THREE.WebGLRenderer = function ( parameters ) {
var materialProperties = properties.get( material );
var parameters = programCache.getParameters( material, lights, fog, object );
var parameters = programCache.getParameters( material, _lights, fog, object );
var code = programCache.getProgramCode( material, parameters );
var program = materialProperties.program;
......
......@@ -66,61 +66,12 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) {
}
function allocateLights( lights ) {
var dirLights = 0;
var pointLights = 0;
var spotLights = 0;
var hemiLights = 0;
for ( var l = 0, ll = lights.length; l < ll; l ++ ) {
var light = lights[ l ];
if ( light instanceof THREE.DirectionalLight ) dirLights ++;
if ( light instanceof THREE.PointLight ) pointLights ++;
if ( light instanceof THREE.SpotLight ) spotLights ++;
if ( light instanceof THREE.HemisphereLight ) hemiLights ++;
}
return { 'directional': dirLights, 'point': pointLights, 'spot': spotLights, 'hemi': hemiLights };
}
function allocateShadows( lights ) {
var maxShadows = 0;
var pointLightShadows = 0;
for ( var l = 0, ll = lights.length; l < ll; l ++ ) {
var light = lights[ l ];
if ( light.castShadow === false ) continue;
if ( light instanceof THREE.SpotLight || light instanceof THREE.DirectionalLight ) maxShadows ++;
if ( light instanceof THREE.PointLight ) {
maxShadows ++;
pointLightShadows ++;
}
}
return { 'maxShadows': maxShadows, 'pointLightShadows': pointLightShadows };
}
this.getParameters = function ( material, lights, fog, object ) {
var shaderID = shaderIDs[ material.type ];
// heuristics to create shader parameters according to lights in the scene
// (not to blow over maxLights budget)
var maxLightCount = allocateLights( lights );
var allocatedShadows = allocateShadows( lights );
var maxBones = allocateBones( object );
var precision = renderer.getPrecision();
......@@ -180,14 +131,15 @@ THREE.WebGLPrograms = function ( renderer, capabilities ) {
maxMorphTargets: renderer.maxMorphTargets,
maxMorphNormals: renderer.maxMorphNormals,
maxDirLights: maxLightCount.directional,
maxPointLights: maxLightCount.point,
maxSpotLights: maxLightCount.spot,
maxHemiLights: maxLightCount.hemi,
maxDirLights: lights.directional.length,
maxPointLights: lights.point.length,
maxSpotLights: lights.spot.length,
maxHemiLights: lights.hemi.length,
maxShadows: lights.shadows,
pointLightShadows: lights.shadowsPointLight,
maxShadows: allocatedShadows.maxShadows,
pointLightShadows: allocatedShadows.pointLightShadows,
shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && allocatedShadows.maxShadows > 0,
shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && lights.shadows > 0,
shadowMapType: renderer.shadowMap.type,
shadowMapDebug: renderer.shadowMap.debug,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册