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

Updated builds.

上级 6039072d
......@@ -24595,7 +24595,10 @@ THREE.WebGLRenderer = function ( parameters ) {
directional: [],
point: [],
spot: [],
hemi: []
hemi: [],
shadows: 0,
shadowsPointLight: 0
},
......@@ -25861,7 +25864,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;
......@@ -27068,6 +27071,9 @@ THREE.WebGLRenderer = function ( parameters ) {
spotLength = 0,
hemiLength = 0;
_lights.shadows = 0;
_lights.shadowsPointLight = 0;
for ( l = 0, ll = lights.length; l < ll; l ++ ) {
light = lights[ l ];
......@@ -27101,6 +27107,7 @@ THREE.WebGLRenderer = function ( parameters ) {
_lights.directional[ directionalLength ++ ] = uniforms;
if ( light.castShadow ) _lights.shadows ++;
} else if ( light instanceof THREE.PointLight ) {
......@@ -27124,6 +27131,13 @@ THREE.WebGLRenderer = function ( parameters ) {
_lights.point[ pointLength ++ ] = uniforms;
if ( light.castShadow ) {
_lights.shadows ++;
_lights.shadowsPointLight ++;
}
} else if ( light instanceof THREE.SpotLight ) {
if( ! light.__webglUniforms ) {
......@@ -27156,6 +27170,8 @@ THREE.WebGLRenderer = function ( parameters ) {
_lights.spot[ spotLength ++ ] = uniforms;
if ( light.castShadow ) _lights.shadows ++;
} else if ( light instanceof THREE.HemisphereLight ) {
if( ! light.__webglUniforms ) {
......@@ -29361,61 +29377,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();
......@@ -29475,14 +29442,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,
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册