|
|
|
@@ -108,13 +108,13 @@ THREE.LineBasicMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.col
|
|
|
|
|
THREE.MeshBasicMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.color=a.color!==void 0?new THREE.Color(a.color):new THREE.Color(16777215);this.map=a.map!==void 0?a.map:null;this.lightMap=a.lightMap!==void 0?a.lightMap:null;this.envMap=a.envMap!==void 0?a.envMap:null;this.combine=a.combine!==void 0?a.combine:THREE.MultiplyOperation;this.reflectivity=a.reflectivity!==void 0?a.reflectivity:1;this.refractionRatio=a.refractionRatio!==void 0?a.refractionRatio:0.98;this.fog=a.fog!==void 0?a.fog:
|
|
|
|
|
!0;this.shading=a.shading!==void 0?a.shading:THREE.SmoothShading;this.wireframe=a.wireframe!==void 0?a.wireframe:!1;this.wireframeLinewidth=a.wireframeLinewidth!==void 0?a.wireframeLinewidth:1;this.wireframeLinecap=a.wireframeLinecap!==void 0?a.wireframeLinecap:"round";this.wireframeLinejoin=a.wireframeLinejoin!==void 0?a.wireframeLinejoin:"round";this.vertexColors=a.vertexColors!==void 0?a.vertexColors:!1;this.skinning=a.skinning!==void 0?a.skinning:!1;this.morphTargets=a.morphTargets!==void 0?a.morphTargets:
|
|
|
|
|
!1};THREE.MeshBasicMaterial.prototype=new THREE.Material;THREE.MeshBasicMaterial.prototype.constructor=THREE.MeshBasicMaterial;
|
|
|
|
|
THREE.MeshLambertMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.color=a.color!==void 0?new THREE.Color(a.color):new THREE.Color(16777215);this.ambient=a.ambient!==void 0?new THREE.Color(a.ambient):new THREE.Color(328965);this.map=a.map!==void 0?a.map:null;this.lightMap=a.lightMap!==void 0?a.lightMap:null;this.envMap=a.envMap!==void 0?a.envMap:null;this.combine=a.combine!==void 0?a.combine:THREE.MultiplyOperation;this.reflectivity=a.reflectivity!==void 0?a.reflectivity:1;this.refractionRatio=
|
|
|
|
|
a.refractionRatio!==void 0?a.refractionRatio:0.98;this.fog=a.fog!==void 0?a.fog:!0;this.shading=a.shading!==void 0?a.shading:THREE.SmoothShading;this.wireframe=a.wireframe!==void 0?a.wireframe:!1;this.wireframeLinewidth=a.wireframeLinewidth!==void 0?a.wireframeLinewidth:1;this.wireframeLinecap=a.wireframeLinecap!==void 0?a.wireframeLinecap:"round";this.wireframeLinejoin=a.wireframeLinejoin!==void 0?a.wireframeLinejoin:"round";this.vertexColors=a.vertexColors!==void 0?a.vertexColors:!1;this.skinning=
|
|
|
|
|
a.skinning!==void 0?a.skinning:!1;this.morphTargets=a.morphTargets!==void 0?a.morphTargets:!1};THREE.MeshLambertMaterial.prototype=new THREE.Material;THREE.MeshLambertMaterial.prototype.constructor=THREE.MeshLambertMaterial;
|
|
|
|
|
THREE.MeshPhongMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.color=a.color!==void 0?new THREE.Color(a.color):new THREE.Color(16777215);this.ambient=a.ambient!==void 0?new THREE.Color(a.ambient):new THREE.Color(328965);this.specular=a.specular!==void 0?new THREE.Color(a.specular):new THREE.Color(1118481);this.shininess=a.shininess!==void 0?a.shininess:30;this.metal=a.metal!==void 0?a.metal:!1;this.perPixel=a.perPixel!==void 0?a.perPixel:!1;this.map=a.map!==void 0?a.map:null;this.lightMap=
|
|
|
|
|
a.lightMap!==void 0?a.lightMap:null;this.envMap=a.envMap!==void 0?a.envMap:null;this.combine=a.combine!==void 0?a.combine:THREE.MultiplyOperation;this.reflectivity=a.reflectivity!==void 0?a.reflectivity:1;this.refractionRatio=a.refractionRatio!==void 0?a.refractionRatio:0.98;this.fog=a.fog!==void 0?a.fog:!0;this.shading=a.shading!==void 0?a.shading:THREE.SmoothShading;this.wireframe=a.wireframe!==void 0?a.wireframe:!1;this.wireframeLinewidth=a.wireframeLinewidth!==void 0?a.wireframeLinewidth:1;this.wireframeLinecap=
|
|
|
|
|
a.wireframeLinecap!==void 0?a.wireframeLinecap:"round";this.wireframeLinejoin=a.wireframeLinejoin!==void 0?a.wireframeLinejoin:"round";this.vertexColors=a.vertexColors!==void 0?a.vertexColors:!1;this.skinning=a.skinning!==void 0?a.skinning:!1;this.morphTargets=a.morphTargets!==void 0?a.morphTargets:!1};THREE.MeshPhongMaterial.prototype=new THREE.Material;THREE.MeshPhongMaterial.prototype.constructor=THREE.MeshPhongMaterial;
|
|
|
|
|
THREE.MeshDepthMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.shading=a.shading!==void 0?a.shading:THREE.SmoothShading;this.wireframe=a.wireframe!==void 0?a.wireframe:!1;this.wireframeLinewidth=a.wireframeLinewidth!==void 0?a.wireframeLinewidth:1};THREE.MeshDepthMaterial.prototype=new THREE.Material;THREE.MeshDepthMaterial.prototype.constructor=THREE.MeshDepthMaterial;
|
|
|
|
|
THREE.MeshLambertMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.color=a.color!==void 0?new THREE.Color(a.color):new THREE.Color(16777215);this.ambient=a.ambient!==void 0?new THREE.Color(a.ambient):new THREE.Color(328965);this.wrapAround=a.wrapAround!==void 0?a.wrapAround:!1;this.wrapRGB=new THREE.Vector3(1,1,1);this.map=a.map!==void 0?a.map:null;this.lightMap=a.lightMap!==void 0?a.lightMap:null;this.envMap=a.envMap!==void 0?a.envMap:null;this.combine=a.combine!==void 0?a.combine:THREE.MultiplyOperation;
|
|
|
|
|
this.reflectivity=a.reflectivity!==void 0?a.reflectivity:1;this.refractionRatio=a.refractionRatio!==void 0?a.refractionRatio:0.98;this.fog=a.fog!==void 0?a.fog:!0;this.shading=a.shading!==void 0?a.shading:THREE.SmoothShading;this.wireframe=a.wireframe!==void 0?a.wireframe:!1;this.wireframeLinewidth=a.wireframeLinewidth!==void 0?a.wireframeLinewidth:1;this.wireframeLinecap=a.wireframeLinecap!==void 0?a.wireframeLinecap:"round";this.wireframeLinejoin=a.wireframeLinejoin!==void 0?a.wireframeLinejoin:
|
|
|
|
|
"round";this.vertexColors=a.vertexColors!==void 0?a.vertexColors:!1;this.skinning=a.skinning!==void 0?a.skinning:!1;this.morphTargets=a.morphTargets!==void 0?a.morphTargets:!1};THREE.MeshLambertMaterial.prototype=new THREE.Material;THREE.MeshLambertMaterial.prototype.constructor=THREE.MeshLambertMaterial;
|
|
|
|
|
THREE.MeshPhongMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.color=a.color!==void 0?new THREE.Color(a.color):new THREE.Color(16777215);this.ambient=a.ambient!==void 0?new THREE.Color(a.ambient):new THREE.Color(328965);this.specular=a.specular!==void 0?new THREE.Color(a.specular):new THREE.Color(1118481);this.shininess=a.shininess!==void 0?a.shininess:30;this.metal=a.metal!==void 0?a.metal:!1;this.perPixel=a.perPixel!==void 0?a.perPixel:!1;this.wrapAround=a.wrapAround!==void 0?a.wrapAround:
|
|
|
|
|
!1;this.wrapRGB=new THREE.Vector3(1,1,1);this.map=a.map!==void 0?a.map:null;this.lightMap=a.lightMap!==void 0?a.lightMap:null;this.envMap=a.envMap!==void 0?a.envMap:null;this.combine=a.combine!==void 0?a.combine:THREE.MultiplyOperation;this.reflectivity=a.reflectivity!==void 0?a.reflectivity:1;this.refractionRatio=a.refractionRatio!==void 0?a.refractionRatio:0.98;this.fog=a.fog!==void 0?a.fog:!0;this.shading=a.shading!==void 0?a.shading:THREE.SmoothShading;this.wireframe=a.wireframe!==void 0?a.wireframe:
|
|
|
|
|
!1;this.wireframeLinewidth=a.wireframeLinewidth!==void 0?a.wireframeLinewidth:1;this.wireframeLinecap=a.wireframeLinecap!==void 0?a.wireframeLinecap:"round";this.wireframeLinejoin=a.wireframeLinejoin!==void 0?a.wireframeLinejoin:"round";this.vertexColors=a.vertexColors!==void 0?a.vertexColors:!1;this.skinning=a.skinning!==void 0?a.skinning:!1;this.morphTargets=a.morphTargets!==void 0?a.morphTargets:!1};THREE.MeshPhongMaterial.prototype=new THREE.Material;
|
|
|
|
|
THREE.MeshPhongMaterial.prototype.constructor=THREE.MeshPhongMaterial;THREE.MeshDepthMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.shading=a.shading!==void 0?a.shading:THREE.SmoothShading;this.wireframe=a.wireframe!==void 0?a.wireframe:!1;this.wireframeLinewidth=a.wireframeLinewidth!==void 0?a.wireframeLinewidth:1};THREE.MeshDepthMaterial.prototype=new THREE.Material;THREE.MeshDepthMaterial.prototype.constructor=THREE.MeshDepthMaterial;
|
|
|
|
|
THREE.MeshNormalMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.shading=a.shading?a.shading:THREE.FlatShading;this.wireframe=a.wireframe?a.wireframe:!1;this.wireframeLinewidth=a.wireframeLinewidth?a.wireframeLinewidth:1};THREE.MeshNormalMaterial.prototype=new THREE.Material;THREE.MeshNormalMaterial.prototype.constructor=THREE.MeshNormalMaterial;THREE.MeshFaceMaterial=function(){};
|
|
|
|
|
THREE.MeshShaderMaterial=function(a){console.warn("DEPRECATED: MeshShaderMaterial() is now ShaderMaterial().");return new THREE.ShaderMaterial(a)};
|
|
|
|
|
THREE.ParticleBasicMaterial=function(a){THREE.Material.call(this,a);a=a||{};this.color=a.color!==void 0?new THREE.Color(a.color):new THREE.Color(16777215);this.map=a.map!==void 0?a.map:null;this.size=a.size!==void 0?a.size:1;this.sizeAttenuation=a.sizeAttenuation!==void 0?a.sizeAttenuation:!0;this.vertexColors=a.vertexColors!==void 0?a.vertexColors:!1;this.fog=a.fog!==void 0?a.fog:!0};THREE.ParticleBasicMaterial.prototype=new THREE.Material;THREE.ParticleBasicMaterial.prototype.constructor=THREE.ParticleBasicMaterial;
|
|
|
|
@@ -150,11 +150,11 @@ THREE.Fog=function(a,b,d){this.color=new THREE.Color(a);this.near=b!==void 0?b:1
|
|
|
|
|
THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#endif",
|
|
|
|
|
envmap_fragment:"#ifdef USE_ENVMAP\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * vReflect.x, vReflect.yz ) );\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, reflectivity );\n} else {\ngl_FragColor.xyz = gl_FragColor.xyz * cubeColor.xyz;\n}\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvec3 nWorld = mat3( objectMatrix[ 0 ].xyz, objectMatrix[ 1 ].xyz, objectMatrix[ 2 ].xyz ) * normal;\nif ( useRefract ) {\nvReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refractionRatio );\n} else {\nvReflect = reflect( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ) );\n}\n#endif",
|
|
|
|
|
map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif",map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, gl_PointCoord );\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform vec4 offsetRepeat;\n#endif",map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n#endif",map_fragment:"#ifdef USE_MAP\n#ifdef GAMMA_INPUT\nvec4 texelColor = texture2D( map, vUv );\ntexelColor.xyz *= texelColor.xyz;\ngl_FragColor = gl_FragColor * texelColor;\n#else\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif\n#endif",
|
|
|
|
|
lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",lightmap_pars_vertex:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\ngl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n#endif",lightmap_vertex:"#ifdef USE_LIGHTMAP\nvUv2 = uv2;\n#endif",lights_lambert_pars_vertex:"uniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif",
|
|
|
|
|
lights_lambert_vertex:"vLightWeighting = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nfloat directionalLightWeighting = max( dot( transformedNormal, normalize( lDirection.xyz ) ), 0.0 );\nvLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;\n}\n#endif\n#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\nfloat pointLightWeighting = max( dot( transformedNormal, lVector ), 0.0 );\nvLightWeighting += pointLightColor[ i ] * pointLightWeighting * lDistance;\n}\n#endif\nvLightWeighting = vLightWeighting * diffuse + ambient * ambientLightColor;",
|
|
|
|
|
lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",lightmap_pars_vertex:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\ngl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n#endif",lightmap_vertex:"#ifdef USE_LIGHTMAP\nvUv2 = uv2;\n#endif",lights_lambert_pars_vertex:"uniform vec3 ambient;\nuniform vec3 diffuse;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif\n#ifdef WRAP_AROUND\nuniform vec3 wrapRGB;\n#endif",
|
|
|
|
|
lights_lambert_vertex:"vLightWeighting = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n#ifdef WRAP_AROUND\nfloat directionalLightWeightingFull = max( dot( transformedNormal, normalize( lDirection.xyz ) ), 0.0 );\nfloat directionalLightWeightingHalf = max( 0.5 * dot( transformedNormal, normalize( lDirection.xyz ) ) + 0.5, 0.0 );\nvec3 directionalLightWeighting = mix( vec3( directionalLightWeightingFull ), vec3( directionalLightWeightingHalf ), wrapRGB );\n#else\nfloat directionalLightWeighting = max( dot( transformedNormal, normalize( lDirection.xyz ) ), 0.0 );\n#endif\nvLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;\n}\n#endif\n#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\n#ifdef WRAP_AROUND\nfloat pointLightWeightingFull = max( dot( transformedNormal, lVector ), 0.0 );\nfloat pointLightWeightingHalf = max( 0.5 * dot( transformedNormal, lVector ) + 0.5, 0.0 );\nvec3 pointLightWeighting = mix( vec3 ( pointLightWeightingFull ), vec3( pointLightWeightingHalf ), wrapRGB );\n#else\nfloat pointLightWeighting = max( dot( transformedNormal, lVector ), 0.0 );\n#endif\nvLightWeighting += pointLightColor[ i ] * pointLightWeighting * lDistance;\n}\n#endif\nvLightWeighting = vLightWeighting * diffuse + ambient * ambientLightColor;",
|
|
|
|
|
lights_phong_pars_vertex:"#if MAX_POINT_LIGHTS > 0\n#ifndef PHONG_PER_PIXEL\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\n#endif",lights_phong_vertex:"#if MAX_POINT_LIGHTS > 0\n#ifndef PHONG_PER_PIXEL\nfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\nvPointLight[ i ] = vec4( lVector, lDistance );\n}\n#endif\n#endif",
|
|
|
|
|
lights_phong_pars_fragment:"uniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n#ifdef PHONG_PER_PIXEL\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#else\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\n#endif\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;",
|
|
|
|
|
lights_phong_fragment:"vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\n#if MAX_POINT_LIGHTS > 0\nvec3 pointDiffuse = vec3( 0.0 );\nvec3 pointSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n#ifdef PHONG_PER_PIXEL\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz + vViewPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\n#else\nvec3 lVector = normalize( vPointLight[ i ].xyz );\nfloat lDistance = vPointLight[ i ].w;\n#endif\nvec3 pointHalfVector = normalize( lVector + viewPosition );\nfloat pointDistance = lDistance;\nfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\nfloat pointDiffuseWeight = max( dot( normal, lVector ), 0.0 );\nfloat pointSpecularWeight = pow( pointDotNormalHalf, shininess );\n#ifdef PHYSICALLY_BASED_SHADING\nvec3 schlick = specular + vec3( 1.0 - specular ) * pow( dot( lVector, pointHalfVector ), 5.0 );\npointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance;\n#else\npointSpecular += specular * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance;\n#endif\npointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * pointDistance;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec3 dirDiffuse = vec3( 0.0 );\nvec3 dirSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nvec3 dirHalfVector = normalize( lDirection.xyz + viewPosition );\nfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\nfloat dirSpecularWeight = pow( dirDotNormalHalf, shininess );\n#ifdef PHYSICALLY_BASED_SHADING\nvec3 schlick = specular + vec3( 1.0 - specular ) * pow( dot( dirVector, dirHalfVector ), 5.0 );\ndirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight;\n#else\ndirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight;\n#endif\ndirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;\n}\n#endif\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\ntotalDiffuse += dirDiffuse;\ntotalSpecular += dirSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalDiffuse += pointDiffuse;\ntotalSpecular += pointSpecular;\n#endif\n#ifdef METAL\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient + totalSpecular );\n#else\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient ) + totalSpecular;\n#endif",
|
|
|
|
|
lights_phong_pars_fragment:"uniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n#ifdef PHONG_PER_PIXEL\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#else\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\n#endif\n#ifdef WRAP_AROUND\nuniform vec3 wrapRGB;\n#endif\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;",
|
|
|
|
|
lights_phong_fragment:"vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\n#if MAX_POINT_LIGHTS > 0\nvec3 pointDiffuse = vec3( 0.0 );\nvec3 pointSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n#ifdef PHONG_PER_PIXEL\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz + vViewPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\n#else\nvec3 lVector = normalize( vPointLight[ i ].xyz );\nfloat lDistance = vPointLight[ i ].w;\n#endif\nvec3 pointHalfVector = normalize( lVector + viewPosition );\nfloat pointDistance = lDistance;\nfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n#ifdef WRAP_AROUND\nfloat pointDiffuseWeightFull = max( dot( normal, lVector ), 0.0 );\nfloat pointDiffuseWeightHalf = max( 0.5 * dot( normal, lVector ) + 0.5, 0.0 );\nvec3 pointDiffuseWeight = mix( vec3 ( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n#else\nfloat pointDiffuseWeight = max( dot( normal, lVector ), 0.0 );\n#endif\nfloat pointSpecularWeight = pow( pointDotNormalHalf, shininess );\n#ifdef PHYSICALLY_BASED_SHADING\nvec3 schlick = specular + vec3( 1.0 - specular ) * pow( dot( lVector, pointHalfVector ), 5.0 );\npointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance;\n#else\npointSpecular += specular * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance;\n#endif\npointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * pointDistance;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec3 dirDiffuse = vec3( 0.0 );\nvec3 dirSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nvec3 dirHalfVector = normalize( lDirection.xyz + viewPosition );\nfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n#ifdef WRAP_AROUND\nfloat dirDiffuseWeightFull = max( dot( normal, dirVector ), 0.0 );\nfloat dirDiffuseWeightHalf = max( 0.5 * dot( normal, dirVector ) + 0.5, 0.0 );\nvec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n#else\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\n#endif\nfloat dirSpecularWeight = pow( dirDotNormalHalf, shininess );\n#ifdef PHYSICALLY_BASED_SHADING\nvec3 schlick = specular + vec3( 1.0 - specular ) * pow( dot( dirVector, dirHalfVector ), 5.0 );\ndirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight;\n#else\ndirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight;\n#endif\ndirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;\n}\n#endif\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\ntotalDiffuse += dirDiffuse;\ntotalSpecular += dirSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalDiffuse += pointDiffuse;\ntotalSpecular += pointSpecular;\n#endif\n#ifdef METAL\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient + totalSpecular );\n#else\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient ) + totalSpecular;\n#endif",
|
|
|
|
|
color_pars_fragment:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_fragment:"#ifdef USE_COLOR\ngl_FragColor = gl_FragColor * vec4( vColor, opacity );\n#endif",color_pars_vertex:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n#ifdef GAMMA_INPUT\nvColor = color * color;\n#else\nvColor = color;\n#endif\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\nuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n#endif",skinning_vertex:"#ifdef USE_SKINNING\ngl_Position = ( boneGlobalMatrices[ int( skinIndex.x ) ] * skinVertexA ) * skinWeight.x;\ngl_Position += ( boneGlobalMatrices[ int( skinIndex.y ) ] * skinVertexB ) * skinWeight.y;\ngl_Position = projectionMatrix * viewMatrix * objectMatrix * gl_Position;\n#endif",
|
|
|
|
|
morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\nuniform float morphTargetInfluences[ 8 ];\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\nvec3 morphed = vec3( 0.0, 0.0, 0.0 );\nmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\nmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\nmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\nmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\nmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\nmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\nmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\nmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\nmorphed += position;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( morphed, 1.0 );\n#endif",
|
|
|
|
|
default_vertex:"#ifndef USE_MORPHTARGETS\n#ifndef USE_SKINNING\ngl_Position = projectionMatrix * mvPosition;\n#endif\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\nuniform sampler2D shadowMap[ MAX_SHADOWS ];\nuniform float shadowDarkness;\nuniform float shadowBias;\nvarying vec4 vShadowCoord[ MAX_SHADOWS ];\nfloat unpackDepth( const in vec4 rgba_depth ) {\nconst vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\nfloat depth = dot( rgba_depth, bit_shift );\nreturn depth;\n}\n#endif",
|
|
|
|
@@ -168,17 +168,17 @@ THREE.ShaderLib={depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:
|
|
|
|
|
value:1}},vertexShader:"varying vec3 vNormal;\nvoid main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvNormal = normalize( normalMatrix * normal );\ngl_Position = projectionMatrix * mvPosition;\n}",fragmentShader:"uniform float opacity;\nvarying vec3 vNormal;\nvoid main() {\ngl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );\n}"},basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.shadowmap]),vertexShader:[THREE.ShaderChunk.map_pars_vertex,
|
|
|
|
|
THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,
|
|
|
|
|
THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( diffuse, opacity );",THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphatest_fragment,
|
|
|
|
|
THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},lambert:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{ambient:{type:"c",value:new THREE.Color(328965)}}]),vertexShader:["varying vec3 vLightWeighting;",THREE.ShaderChunk.map_pars_vertex,
|
|
|
|
|
THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_lambert_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,"vec3 transformedNormal = normalize( normalMatrix * normal );",
|
|
|
|
|
THREE.ShaderChunk.lights_lambert_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;\nvarying vec3 vLightWeighting;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( vec3 ( 1.0 ), opacity );",
|
|
|
|
|
THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphatest_fragment,"gl_FragColor.xyz = gl_FragColor.xyz * vLightWeighting;",THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},phong:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{ambient:{type:"c",
|
|
|
|
|
value:new THREE.Color(328965)},specular:{type:"c",value:new THREE.Color(1118481)},shininess:{type:"f",value:30}}]),vertexShader:["varying vec3 vViewPosition;\nvarying vec3 vNormal;",THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_phong_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
|
|
|
|
|
THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,"#ifndef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\n#endif\nvViewPosition = -mvPosition.xyz;\nvec3 transformedNormal = normalMatrix * normal;\nvNormal = transformedNormal;",THREE.ShaderChunk.lights_phong_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,
|
|
|
|
|
"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;\nuniform vec3 ambient;\nuniform vec3 specular;\nuniform float shininess;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.lights_phong_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( vec3 ( 1.0 ), opacity );",THREE.ShaderChunk.map_fragment,
|
|
|
|
|
THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.lights_phong_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},particle_basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.particle,THREE.UniformsLib.shadowmap]),vertexShader:["uniform float size;\nuniform float scale;",THREE.ShaderChunk.color_pars_vertex,
|
|
|
|
|
THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n#ifdef USE_SIZEATTENUATION\ngl_PointSize = size * ( scale / length( mvPosition.xyz ) );\n#else\ngl_PointSize = size;\n#endif\ngl_Position = projectionMatrix * mvPosition;",THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 psColor;\nuniform float opacity;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragment,
|
|
|
|
|
THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( psColor, opacity );",THREE.ShaderChunk.map_particle_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.morphtarget_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.morphtarget_vertex,
|
|
|
|
|
THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}};
|
|
|
|
|
THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},lambert:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{ambient:{type:"c",value:new THREE.Color(328965)},wrapRGB:{type:"v3",value:new THREE.Vector3(1,1,1)}}]),vertexShader:["varying vec3 vLightWeighting;",
|
|
|
|
|
THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_lambert_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,
|
|
|
|
|
"vec3 transformedNormal = normalize( normalMatrix * normal );",THREE.ShaderChunk.lights_lambert_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;\nvarying vec3 vLightWeighting;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,
|
|
|
|
|
THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( vec3 ( 1.0 ), opacity );",THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphatest_fragment,"gl_FragColor.xyz = gl_FragColor.xyz * vLightWeighting;",THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},phong:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,
|
|
|
|
|
THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{ambient:{type:"c",value:new THREE.Color(328965)},specular:{type:"c",value:new THREE.Color(1118481)},shininess:{type:"f",value:30},wrapRGB:{type:"v3",value:new THREE.Vector3(1,1,1)}}]),vertexShader:["varying vec3 vViewPosition;\nvarying vec3 vNormal;",THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_phong_pars_vertex,THREE.ShaderChunk.color_pars_vertex,
|
|
|
|
|
THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,"#ifndef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\n#endif\nvViewPosition = -mvPosition.xyz;\nvec3 transformedNormal = normalMatrix * normal;\nvNormal = transformedNormal;",
|
|
|
|
|
THREE.ShaderChunk.lights_phong_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;\nuniform vec3 ambient;\nuniform vec3 specular;\nuniform float shininess;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,
|
|
|
|
|
THREE.ShaderChunk.lights_phong_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( vec3 ( 1.0 ), opacity );",THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.lights_phong_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},particle_basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.particle,
|
|
|
|
|
THREE.UniformsLib.shadowmap]),vertexShader:["uniform float size;\nuniform float scale;",THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n#ifdef USE_SIZEATTENUATION\ngl_PointSize = size * ( scale / length( mvPosition.xyz ) );\n#else\ngl_PointSize = size;\n#endif\ngl_Position = projectionMatrix * mvPosition;",THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 psColor;\nuniform float opacity;",
|
|
|
|
|
THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( psColor, opacity );",THREE.ShaderChunk.map_particle_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.morphtarget_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
|
|
|
|
|
THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}};
|
|
|
|
|
THREE.WebGLRenderer=function(a){function b(a,b){var d=a.vertices.length,c=b.material;if(c.attributes){if(a.__webglCustomAttributesList===void 0)a.__webglCustomAttributesList=[];for(var f in c.attributes){var g=c.attributes[f];if(!g.__webglInitialized||g.createUniqueBuffers){g.__webglInitialized=!0;var h=1;g.type==="v2"?h=2:g.type==="v3"?h=3:g.type==="v4"?h=4:g.type==="c"&&(h=3);g.size=h;g.array=new Float32Array(d*h);g.buffer=e.createBuffer();g.buffer.belongsToAttribute=f;g.needsUpdate=!0}a.__webglCustomAttributesList.push(g)}}}
|
|
|
|
|
function d(a,b){if(a.material&&!(a.material instanceof THREE.MeshFaceMaterial))return a.material;else if(b.materialIndex>=0)return a.geometry.materials[b.materialIndex]}function c(a){if(a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial)return!1;return a&&a.shading!==void 0&&a.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function f(a){if(a.vertexColors)return a.vertexColors;return!1}function g(a){if(a.map||a.lightMap||a instanceof THREE.ShaderMaterial)return!0;
|
|
|
|
|
return!1}function h(a,b,d){var c,f,g,h,v=a.vertices;h=v.length;var i=a.colors,j=i.length,t=a.__vertexArray,k=a.__colorArray,n=a.__sortArray,q=a.__dirtyVertices,m=a.__dirtyColors,l=a.__webglCustomAttributesList;if(d.sortParticles){Da.multiplySelf(d.matrixWorld);for(c=0;c<h;c++)f=v[c].position,Ba.copy(f),Da.multiplyVector3(Ba),n[c]=[Ba.z,c];n.sort(function(a,b){return b[0]-a[0]});for(c=0;c<h;c++)f=v[n[c][1]].position,g=c*3,t[g]=f.x,t[g+1]=f.y,t[g+2]=f.z;for(c=0;c<j;c++)g=c*3,f=i[n[c][1]],k[g]=f.r,k[g+
|
|
|
|
@@ -194,104 +194,104 @@ THREE.DirectionalLight)p=J*3,H.gammaInput?(w[p]=t.r*t.r*l*l,w[p+1]=t.g*t.g*l*l,w
|
|
|
|
|
x*3,H.gammaInput?(y[U]=t.r*t.r*l*l,y[U+1]=t.g*t.g*l*l,y[U+2]=t.b*t.b*l*l):(y[U]=t.r*l,y[U+1]=t.g*l,y[U+2]=t.b*l),k=k.matrixWorld.getPosition(),u[U]=k.x,u[U+1]=k.y,u[U+2]=k.z,D[x]=p,x+=1;d=J*3;for(i=w.length;d<i;d++)w[d]=0;d=x*3;for(i=y.length;d<i;d++)y[d]=0;r.point.length=x;r.directional.length=J;r.ambient[0]=m;r.ambient[1]=n;r.ambient[2]=q;b=La;j.ambientLightColor.value=b.ambient;j.directionalLightColor.value=b.directional.colors;j.directionalLightDirection.value=b.directional.positions;j.pointLightColor.value=
|
|
|
|
|
b.point.colors;j.pointLightPosition.value=b.point.positions;j.pointLightDistance.value=b.point.distances}if(c instanceof THREE.MeshBasicMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.MeshPhongMaterial)j.opacity.value=c.opacity,H.gammaInput?j.diffuse.value.copyGammaToLinear(c.color):j.diffuse.value=c.color,(j.map.texture=c.map)&&j.offsetRepeat.value.set(c.map.offset.x,c.map.offset.y,c.map.repeat.x,c.map.repeat.y),j.lightMap.texture=c.lightMap,j.envMap.texture=c.envMap,j.flipEnvMap.value=
|
|
|
|
|
c.envMap instanceof THREE.WebGLRenderTargetCube?1:-1,j.reflectivity.value=c.reflectivity,j.refractionRatio.value=c.refractionRatio,j.combine.value=c.combine,j.useRefract.value=c.envMap&&c.envMap.mapping instanceof THREE.CubeRefractionMapping;if(c instanceof THREE.LineBasicMaterial)j.diffuse.value=c.color,j.opacity.value=c.opacity;else if(c instanceof THREE.ParticleBasicMaterial)j.psColor.value=c.color,j.opacity.value=c.opacity,j.size.value=c.size,j.scale.value=ma.height/2,j.map.texture=c.map;else if(c instanceof
|
|
|
|
|
THREE.MeshPhongMaterial)j.shininess.value=c.shininess,H.gammaInput?(j.ambient.value.copyGammaToLinear(c.ambient),j.specular.value.copyGammaToLinear(c.specular)):(j.ambient.value=c.ambient,j.specular.value=c.specular);else if(c instanceof THREE.MeshLambertMaterial)H.gammaInput?j.ambient.value.copyGammaToLinear(c.ambient):j.ambient.value=c.ambient;else if(c instanceof THREE.MeshDepthMaterial)j.mNear.value=a.near,j.mFar.value=a.far,j.opacity.value=c.opacity;else if(c instanceof THREE.MeshNormalMaterial)j.opacity.value=
|
|
|
|
|
c.opacity;if(f.receiveShadow&&!c._shadowPass&&j.shadowMatrix){for(b=0;b<H.shadowMapPlugin.shadowMatrix.length;b++)j.shadowMatrix.value[b]=H.shadowMapPlugin.shadowMatrix[b],j.shadowMap.texture[b]=H.shadowMapPlugin.shadowMap[b];j.shadowDarkness.value=H.shadowMapDarkness;j.shadowBias.value=H.shadowMapBias}b=c.uniformsList;j=0;for(d=b.length;j<d;j++)if(n=g.uniforms[b[j][1]])if(m=b[j][0],q=m.type,i=m.value,q==="i")e.uniform1i(n,i);else if(q==="f")e.uniform1f(n,i);else if(q==="v2")e.uniform2f(n,i.x,i.y);
|
|
|
|
|
else if(q==="v3")e.uniform3f(n,i.x,i.y,i.z);else if(q==="v4")e.uniform4f(n,i.x,i.y,i.z,i.w);else if(q==="c")e.uniform3f(n,i.r,i.g,i.b);else if(q==="fv1")e.uniform1fv(n,i);else if(q==="fv")e.uniform3fv(n,i);else if(q==="v3v"){if(!m._array)m._array=new Float32Array(3*i.length);q=0;for(r=i.length;q<r;q++)w=q*3,m._array[w]=i[q].x,m._array[w+1]=i[q].y,m._array[w+2]=i[q].z;e.uniform3fv(n,m._array)}else if(q==="m4"){if(!m._array)m._array=new Float32Array(16);i.flattenToArray(m._array);e.uniformMatrix4fv(n,
|
|
|
|
|
!1,m._array)}else if(q==="m4v"){if(!m._array)m._array=new Float32Array(16*i.length);q=0;for(r=i.length;q<r;q++)i[q].flattenToArrayOffset(m._array,q*16);e.uniformMatrix4fv(n,!1,m._array)}else if(q==="t"){if(e.uniform1i(n,i),n=m.texture)if(n.image instanceof Array&&n.image.length===6){if(m=n,m.image.length===6)if(m.needsUpdate){if(!m.image.__webglTextureCube)m.image.__webglTextureCube=e.createTexture();e.activeTexture(e.TEXTURE0+i);e.bindTexture(e.TEXTURE_CUBE_MAP,m.image.__webglTextureCube);i=C(e.TEXTURE_CUBE_MAP,
|
|
|
|
|
m,m.image[0]);n=Q(m.format);q=Q(m.type);for(r=0;r<6;r++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,n,n,q,m.image[r]);i&&e.generateMipmap(e.TEXTURE_CUBE_MAP);m.needsUpdate=!1}else e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_CUBE_MAP,m.image.__webglTextureCube)}else n instanceof THREE.WebGLRenderTargetCube?(m=n,e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_CUBE_MAP,m.__webglTexture)):H.setTexture(n,i)}else if(q==="tv"){if(!m._array){m._array=[];q=0;for(r=m.texture.length;q<r;q++)m._array[q]=
|
|
|
|
|
i+q}e.uniform1iv(n,m._array);q=0;for(r=m.texture.length;q<r;q++)(n=m.texture[q])&&H.setTexture(n,m._array[q])}(c instanceof THREE.ShaderMaterial||c instanceof THREE.MeshPhongMaterial||c.envMap)&&h.cameraPosition!==null&&e.uniform3f(h.cameraPosition,a.position.x,a.position.y,a.position.z);(c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.ShaderMaterial||c.skinning)&&h.viewMatrix!==null&&e.uniformMatrix4fv(h.viewMatrix,!1,a._viewMatrixArray);c.skinning&&
|
|
|
|
|
(e.uniformMatrix4fv(h.cameraInverseMatrix,!1,a._viewMatrixArray),e.uniformMatrix4fv(h.boneGlobalMatrices,!1,f.boneMatrices))}e.uniformMatrix4fv(h.modelViewMatrix,!1,f._modelViewMatrixArray);h.normalMatrix&&e.uniformMatrix3fv(h.normalMatrix,!1,f._normalMatrixArray);(c instanceof THREE.ShaderMaterial||c.envMap||c.skinning||f.receiveShadow)&&h.objectMatrix!==null&&e.uniformMatrix4fv(h.objectMatrix,!1,f._objectMatrixArray);return g}function J(a,b){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,
|
|
|
|
|
a.matrixWorld,a._modelViewMatrixArray);var c=THREE.Matrix4.makeInvert3x3(a._modelViewMatrix);c&&c.transposeIntoArray(a._normalMatrixArray)}function O(a){wa!==a&&(e.depthMask(a),wa=a)}function P(a,b,c){Ca!==a&&(a?e.enable(e.POLYGON_OFFSET_FILL):e.disable(e.POLYGON_OFFSET_FILL),Ca=a);if(a&&(za!==b||Aa!==c))e.polygonOffset(b,c),za=b,Aa=c}function V(a,b){var c;a==="fragment"?c=e.createShader(e.FRAGMENT_SHADER):a==="vertex"&&(c=e.createShader(e.VERTEX_SHADER));e.shaderSource(c,b);e.compileShader(c);if(!e.getShaderParameter(c,
|
|
|
|
|
e.COMPILE_STATUS))return console.error(e.getShaderInfoLog(c)),console.error(b),null;return c}function C(a,b,c){return(c.width&c.width-1)===0&&(c.height&c.height-1)===0?(e.texParameteri(a,e.TEXTURE_WRAP_S,Q(b.wrapS)),e.texParameteri(a,e.TEXTURE_WRAP_T,Q(b.wrapT)),e.texParameteri(a,e.TEXTURE_MAG_FILTER,Q(b.magFilter)),e.texParameteri(a,e.TEXTURE_MIN_FILTER,Q(b.minFilter)),!0):(e.texParameteri(a,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(a,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(a,e.TEXTURE_MAG_FILTER,
|
|
|
|
|
N(b.magFilter)),e.texParameteri(a,e.TEXTURE_MIN_FILTER,N(b.minFilter)),!1)}function D(a,b){e.bindRenderbuffer(e.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,b.width,b.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,b.width,b.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,a)):
|
|
|
|
|
e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,b.width,b.height)}function N(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return e.NEAREST;default:return e.LINEAR}}function Q(a){switch(a){case THREE.RepeatWrapping:return e.REPEAT;case THREE.ClampToEdgeWrapping:return e.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return e.MIRRORED_REPEAT;case THREE.NearestFilter:return e.NEAREST;case THREE.NearestMipMapNearestFilter:return e.NEAREST_MIPMAP_NEAREST;
|
|
|
|
|
case THREE.NearestMipMapLinearFilter:return e.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return e.LINEAR;case THREE.LinearMipMapNearestFilter:return e.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return e.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return e.BYTE;case THREE.UnsignedByteType:return e.UNSIGNED_BYTE;case THREE.ShortType:return e.SHORT;case THREE.UnsignedShortType:return e.UNSIGNED_SHORT;case THREE.IntType:return e.INT;case THREE.UnsignedShortType:return e.UNSIGNED_INT;case THREE.FloatType:return e.FLOAT;
|
|
|
|
|
case THREE.AlphaFormat:return e.ALPHA;case THREE.RGBFormat:return e.RGB;case THREE.RGBAFormat:return e.RGBA;case THREE.LuminanceFormat:return e.LUMINANCE;case THREE.LuminanceAlphaFormat:return e.LUMINANCE_ALPHA}return 0}var a=a||{},ma=a.canvas!==void 0?a.canvas:document.createElement("canvas"),ua=a.precision!==void 0?a.precision:"mediump",ha=a.antialias!==void 0?a.antialias:!1,ca=a.stencil!==void 0?a.stencil:!0,pa=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:!1,ja=a.clearColor!==void 0?
|
|
|
|
|
new THREE.Color(a.clearColor):new THREE.Color(0),xa=a.clearAlpha!==void 0?a.clearAlpha:0,va=a.maxLights!==void 0?a.maxLights:4;this.domElement=ma;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapBias=0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=
|
|
|
|
|
5E3;this.shadowCameraFov=50;this.shadowMapEnabled=!1;this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.maxMorphTargets=8;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var H=this,e,ya=[],T=null,qa=null,I=-1,R=null,na=0,ra=null,Z=null,sa=null,oa=null,wa=null,Ca=null,za=null,Aa=null,ta=null,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,Ia=new THREE.Frustum,Da=new THREE.Matrix4,Ba=new THREE.Vector4,La={ambient:[0,
|
|
|
|
|
0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}};e=function(){var a;try{if(!(a=ma.getContext("experimental-webgl",{antialias:ha,stencil:ca,preserveDrawingBuffer:pa})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+a.getParameter(a.VERSION)+" | "+a.getParameter(a.VENDOR)+" | "+a.getParameter(a.RENDERER)+" | "+a.getParameter(a.SHADING_LANGUAGE_VERSION))}catch(b){console.error(b)}return a}();e.clearColor(0,0,0,1);e.clearDepth(1);
|
|
|
|
|
e.clearStencil(0);e.enable(e.DEPTH_TEST);e.depthFunc(e.LEQUAL);e.frontFace(e.CCW);e.cullFace(e.BACK);e.enable(e.CULL_FACE);e.enable(e.BLEND);e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA);e.clearColor(ja.r,ja.g,ja.b,xa);this.context=e;var Ma=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;this.getContext=function(){return e};this.supportsVertexTextures=function(){return Ma};this.setSize=function(a,b){ma.width=a;ma.height=b;this.setViewport(0,0,ma.width,ma.height)};this.setViewport=
|
|
|
|
|
function(a,b,c,d){Ea=a;Fa=b;Ga=c;Ha=d;e.viewport(Ea,Fa,Ga,Ha)};this.setScissor=function(a,b,c,d){e.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?e.enable(e.SCISSOR_TEST):e.disable(e.SCISSOR_TEST)};this.setClearColorHex=function(a,b){ja.setHex(a);xa=b;e.clearColor(ja.r,ja.g,ja.b,xa)};this.setClearColor=function(a,b){ja.copy(a);xa=b;e.clearColor(ja.r,ja.g,ja.b,xa)};this.getClearColor=function(){return ja};this.getClearAlpha=function(){return xa};this.clear=function(a,b,c){var d=0;if(a===void 0||
|
|
|
|
|
a)d|=e.COLOR_BUFFER_BIT;if(b===void 0||b)d|=e.DEPTH_BUFFER_BIT;if(c===void 0||c)d|=e.STENCIL_BUFFER_BIT;e.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrixArray,delete a._modelViewMatrixArray,delete a._objectMatrixArray,
|
|
|
|
|
a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];e.deleteBuffer(c.__webglVertexBuffer);e.deleteBuffer(c.__webglNormalBuffer);e.deleteBuffer(c.__webglTangentBuffer);e.deleteBuffer(c.__webglColorBuffer);e.deleteBuffer(c.__webglUVBuffer);e.deleteBuffer(c.__webglUV2Buffer);e.deleteBuffer(c.__webglSkinVertexABuffer);e.deleteBuffer(c.__webglSkinVertexBBuffer);e.deleteBuffer(c.__webglSkinIndicesBuffer);e.deleteBuffer(c.__webglSkinWeightsBuffer);e.deleteBuffer(c.__webglFaceBuffer);
|
|
|
|
|
e.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var d=0,f=c.numMorphTargets;d<f;d++)e.deleteBuffer(c.__webglMorphTargetsBuffers[d]);if(c.__webglCustomAttributesList)for(d in d=void 0,c.__webglCustomAttributesList)e.deleteBuffer(c.__webglCustomAttributesList[d].buffer);H.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=a.geometry,e.deleteBuffer(a.__webglVertexBuffer),e.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,
|
|
|
|
|
e.deleteBuffer(a.__webglVertexBuffer),e.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,e.deleteBuffer(a.__webglVertexBuffer),e.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,e.deleteTexture(a.__webglTexture),H.info.memory.textures--};this.updateShadowMap=function(a,b){T=null;I=R=wa=oa=sa=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=
|
|
|
|
|
function(a,b,c){if(!a.__webglVertexBuffer)a.__webglVertexBuffer=e.createBuffer();if(!a.__webglNormalBuffer)a.__webglNormalBuffer=e.createBuffer();a.hasPos&&(e.bindBuffer(e.ARRAY_BUFFER,a.__webglVertexBuffer),e.bufferData(e.ARRAY_BUFFER,a.positionArray,e.DYNAMIC_DRAW),e.enableVertexAttribArray(b.attributes.position),e.vertexAttribPointer(b.attributes.position,3,e.FLOAT,!1,0,0));if(a.hasNormal){e.bindBuffer(e.ARRAY_BUFFER,a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,f,g,h,i,j,m,k,l,n,q=a.count*
|
|
|
|
|
3;for(n=0;n<q;n+=9)c=a.normalArray,d=c[n],f=c[n+1],g=c[n+2],h=c[n+3],j=c[n+4],k=c[n+5],i=c[n+6],m=c[n+7],l=c[n+8],d=(d+h+i)/3,f=(f+j+m)/3,g=(g+k+l)/3,c[n]=d,c[n+1]=f,c[n+2]=g,c[n+3]=d,c[n+4]=f,c[n+5]=g,c[n+6]=d,c[n+7]=f,c[n+8]=g}e.bufferData(e.ARRAY_BUFFER,a.normalArray,e.DYNAMIC_DRAW);e.enableVertexAttribArray(b.attributes.normal);e.vertexAttribPointer(b.attributes.normal,3,e.FLOAT,!1,0,0)}e.drawArrays(e.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,f,g){if(d.opacity!==
|
|
|
|
|
0&&(c=y(a,b,c,d,g),a=c.attributes,b=!1,d=f.id*16777215+c.id*2+(d.wireframe?1:0),d!==R&&(R=d,b=!0),g instanceof THREE.Mesh)){d=f.offsets;for(g=0;g<d.length;++g)b&&(e.bindBuffer(e.ARRAY_BUFFER,f.vertexPositionBuffer),e.vertexAttribPointer(a.position,f.vertexPositionBuffer.itemSize,e.FLOAT,!1,0,d[g].index*12),a.normal>=0&&f.vertexNormalBuffer&&(e.bindBuffer(e.ARRAY_BUFFER,f.vertexNormalBuffer),e.vertexAttribPointer(a.normal,f.vertexNormalBuffer.itemSize,e.FLOAT,!1,0,d[g].index*12)),a.uv>=0&&f.vertexUvBuffer&&
|
|
|
|
|
(f.vertexUvBuffer?(e.bindBuffer(e.ARRAY_BUFFER,f.vertexUvBuffer),e.vertexAttribPointer(a.uv,f.vertexUvBuffer.itemSize,e.FLOAT,!1,0,d[g].index*8),e.enableVertexAttribArray(a.uv)):e.disableVertexAttribArray(a.uv)),a.color>=0&&f.vertexColorBuffer&&(e.bindBuffer(e.ARRAY_BUFFER,f.vertexColorBuffer),e.vertexAttribPointer(a.color,f.vertexColorBuffer.itemSize,e.FLOAT,!1,0,d[g].index*16)),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,f.vertexIndexBuffer)),e.drawElements(e.TRIANGLES,d[g].count,e.UNSIGNED_SHORT,d[g].start*
|
|
|
|
|
2),H.info.render.calls++,H.info.render.vertices+=d[g].count,H.info.render.faces+=d[g].count/3}};this.renderBuffer=function(a,b,c,d,f,g){if(d.opacity!==0){var h,i,c=y(a,b,c,d,g),b=c.attributes,a=!1,c=f.id*16777215+c.id*2+(d.wireframe?1:0);c!==R&&(R=c,a=!0);if(!d.morphTargets&&b.position>=0)a&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglVertexBuffer),e.vertexAttribPointer(b.position,3,e.FLOAT,!1,0,0));else if(g.morphTargetBase){c=d.program.attributes;g.morphTargetBase!==-1?(e.bindBuffer(e.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[g.morphTargetBase]),
|
|
|
|
|
e.vertexAttribPointer(c.position,3,e.FLOAT,!1,0,0)):c.position>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglVertexBuffer),e.vertexAttribPointer(c.position,3,e.FLOAT,!1,0,0));if(g.morphTargetForcedOrder.length){h=0;var j=g.morphTargetForcedOrder;for(i=g.morphTargetInfluences;h<d.numSupportedMorphTargets&&h<j.length;)e.bindBuffer(e.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[j[h]]),e.vertexAttribPointer(c["morphTarget"+h],3,e.FLOAT,!1,0,0),g.__webglMorphTargetInfluences[h]=i[j[h]],h++}else{var j=[],m=-1,
|
|
|
|
|
k=0;i=g.morphTargetInfluences;var l,n=i.length;h=0;for(g.morphTargetBase!==-1&&(j[g.morphTargetBase]=!0);h<d.numSupportedMorphTargets;){for(l=0;l<n;l++)!j[l]&&i[l]>m&&(k=l,m=i[k]);e.bindBuffer(e.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[k]);e.vertexAttribPointer(c["morphTarget"+h],3,e.FLOAT,!1,0,0);g.__webglMorphTargetInfluences[h]=m;j[k]=1;m=-1;h++}}d.program.uniforms.morphTargetInfluences!==null&&e.uniform1fv(d.program.uniforms.morphTargetInfluences,g.__webglMorphTargetInfluences)}if(a){if(f.__webglCustomAttributesList){h=
|
|
|
|
|
0;for(i=f.__webglCustomAttributesList.length;h<i;h++)c=f.__webglCustomAttributesList[h],b[c.buffer.belongsToAttribute]>=0&&(e.bindBuffer(e.ARRAY_BUFFER,c.buffer),e.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,e.FLOAT,!1,0,0))}b.color>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglColorBuffer),e.vertexAttribPointer(b.color,3,e.FLOAT,!1,0,0));b.normal>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglNormalBuffer),e.vertexAttribPointer(b.normal,3,e.FLOAT,!1,0,0));b.tangent>=0&&(e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
|
|
f.__webglTangentBuffer),e.vertexAttribPointer(b.tangent,4,e.FLOAT,!1,0,0));b.uv>=0&&(f.__webglUVBuffer?(e.bindBuffer(e.ARRAY_BUFFER,f.__webglUVBuffer),e.vertexAttribPointer(b.uv,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(b.uv)):e.disableVertexAttribArray(b.uv));b.uv2>=0&&(f.__webglUV2Buffer?(e.bindBuffer(e.ARRAY_BUFFER,f.__webglUV2Buffer),e.vertexAttribPointer(b.uv2,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(b.uv2)):e.disableVertexAttribArray(b.uv2));d.skinning&&b.skinVertexA>=0&&b.skinVertexB>=
|
|
|
|
|
0&&b.skinIndex>=0&&b.skinWeight>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinVertexABuffer),e.vertexAttribPointer(b.skinVertexA,4,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinVertexBBuffer),e.vertexAttribPointer(b.skinVertexB,4,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinIndicesBuffer),e.vertexAttribPointer(b.skinIndex,4,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinWeightsBuffer),e.vertexAttribPointer(b.skinWeight,4,e.FLOAT,!1,0,0))}g instanceof THREE.Mesh?(d.wireframe?
|
|
|
|
|
(d=d.wireframeLinewidth,d!==ta&&(e.lineWidth(d),ta=d),a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,f.__webglLineBuffer),e.drawElements(e.LINES,f.__webglLineCount,e.UNSIGNED_SHORT,0)):(a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,f.__webglFaceBuffer),e.drawElements(e.TRIANGLES,f.__webglFaceCount,e.UNSIGNED_SHORT,0)),H.info.render.calls++,H.info.render.vertices+=f.__webglFaceCount,H.info.render.faces+=f.__webglFaceCount/3):g instanceof THREE.Line?(g=g.type===THREE.LineStrip?e.LINE_STRIP:e.LINES,d=d.linewidth,d!==
|
|
|
|
|
ta&&(e.lineWidth(d),ta=d),e.drawArrays(g,0,f.__webglLineCount),H.info.render.calls++):g instanceof THREE.ParticleSystem?(e.drawArrays(e.POINTS,0,f.__webglParticleCount),H.info.render.calls++,H.info.render.points+=f.__webglParticleCount):g instanceof THREE.Ribbon&&(e.drawArrays(e.TRIANGLE_STRIP,0,f.__webglVertexCount),H.info.render.calls++)}};this.render=function(a,b,c,d){var f,g,h,m,p=a.lights,r=a.fog;I=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);b.parent===void 0&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),
|
|
|
|
|
a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();l(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=0;H.info.render.points=0;b.matrixWorldInverse.getInverse(b.matrixWorld);if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Da.multiply(b.projectionMatrix,
|
|
|
|
|
b.matrixWorldInverse);Ia.setFromMatrix(Da);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);m=a.__webglObjects;d=0;for(f=m.length;d<f;d++)if(g=m[d],h=g.object,g.render=!1,h.visible&&(!(h instanceof THREE.Mesh||h instanceof THREE.ParticleSystem)||!h.frustumCulled||Ia.contains(h))){h.matrixWorld.flattenToArray(h._objectMatrixArray);J(h,b);var t=g,w=t.object,n=t.buffer,q=void 0,q=q=void 0,q=w.material;if(q instanceof THREE.MeshFaceMaterial){if(q=
|
|
|
|
|
n.materialIndex,q>=0)q=w.geometry.materials[q],q.transparent?(t.transparent=q,t.opaque=null):(t.opaque=q,t.transparent=null)}else if(q)q.transparent?(t.transparent=q,t.opaque=null):(t.opaque=q,t.transparent=null);g.render=!0;if(this.sortObjects)h.renderDepth?g.z=h.renderDepth:(Ba.copy(h.position),Da.multiplyVector3(Ba),g.z=Ba.z)}this.sortObjects&&m.sort(i);m=a.__webglObjectsImmediate;d=0;for(f=m.length;d<f;d++)if(g=m[d],h=g.object,h.visible)h.matrixAutoUpdate&&h.matrixWorld.flattenToArray(h._objectMatrixArray),
|
|
|
|
|
J(h,b),h=g.object.material,h.transparent?(g.transparent=h,g.opaque=null):(g.opaque=h,g.transparent=null);a.overrideMaterial?(this.setBlending(a.overrideMaterial.blending),this.setDepthTest(a.overrideMaterial.depthTest),O(a.overrideMaterial.depthWrite),P(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),k(a.__webglObjects,!1,"",b,p,r,!0,a.overrideMaterial),j(a.__webglObjectsImmediate,"",b,p,r,!1,a.overrideMaterial)):(this.setBlending(THREE.NormalBlending),
|
|
|
|
|
k(a.__webglObjects,!0,"opaque",b,p,r,!1),j(a.__webglObjectsImmediate,"opaque",b,p,r,!1),k(a.__webglObjects,!1,"transparent",b,p,r,!0),j(a.__webglObjectsImmediate,"transparent",b,p,r,!0));l(this.renderPluginsPost,a,b);c&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(e.bindTexture(e.TEXTURE_CUBE_MAP,c.__webglTexture),e.generateMipmap(e.TEXTURE_CUBE_MAP),e.bindTexture(e.TEXTURE_CUBE_MAP,null)):(e.bindTexture(e.TEXTURE_2D,c.__webglTexture),
|
|
|
|
|
e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)))};this.renderImmediateObject=function(a,b,c,d,f){var g=y(a,b,c,d,f);R=-1;H.setObjectFaces(f);f.immediateRenderCallback?f.immediateRenderCallback(g,e,Ia):f.render(function(a){H.renderBufferImmediate(a,g,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects)a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[];for(;a.__objectsAdded.length;){var i=a.__objectsAdded[0],j=a,k=void 0,l=void 0,
|
|
|
|
|
F=void 0;if(!i.__webglInit)if(i.__webglInit=!0,i._modelViewMatrix=new THREE.Matrix4,i._normalMatrixArray=new Float32Array(9),i._modelViewMatrixArray=new Float32Array(16),i._objectMatrixArray=new Float32Array(16),i.matrixWorld.flattenToArray(i._objectMatrixArray),i instanceof THREE.Mesh){if(l=i.geometry,l instanceof THREE.Geometry){if(l.geometryGroups===void 0){var F=l,G=void 0,v=void 0,y=void 0,C=void 0,t=void 0,D=void 0,n=void 0,q={},J=F.morphTargets.length;F.geometryGroups={};G=0;for(v=F.faces.length;G<
|
|
|
|
|
v;G++)y=F.faces[G],C=y.materialIndex,D=C!==void 0?C:-1,q[D]===void 0&&(q[D]={hash:D,counter:0}),n=q[D].hash+"_"+q[D].counter,F.geometryGroups[n]===void 0&&(F.geometryGroups[n]={faces3:[],faces4:[],materialIndex:C,vertices:0,numMorphTargets:J}),t=y instanceof THREE.Face3?3:4,F.geometryGroups[n].vertices+t>65535&&(q[D].counter+=1,n=q[D].hash+"_"+q[D].counter,F.geometryGroups[n]===void 0&&(F.geometryGroups[n]={faces3:[],faces4:[],materialIndex:C,vertices:0,numMorphTargets:J})),y instanceof THREE.Face3?
|
|
|
|
|
F.geometryGroups[n].faces3.push(G):F.geometryGroups[n].faces4.push(G),F.geometryGroups[n].vertices+=t;F.geometryGroupsList=[];G=void 0;for(G in F.geometryGroups)F.geometryGroups[G].id=na++,F.geometryGroupsList.push(F.geometryGroups[G])}for(k in l.geometryGroups)if(F=l.geometryGroups[k],!F.__webglVertexBuffer){G=F;G.__webglVertexBuffer=e.createBuffer();G.__webglNormalBuffer=e.createBuffer();G.__webglTangentBuffer=e.createBuffer();G.__webglColorBuffer=e.createBuffer();G.__webglUVBuffer=e.createBuffer();
|
|
|
|
|
G.__webglUV2Buffer=e.createBuffer();G.__webglSkinVertexABuffer=e.createBuffer();G.__webglSkinVertexBBuffer=e.createBuffer();G.__webglSkinIndicesBuffer=e.createBuffer();G.__webglSkinWeightsBuffer=e.createBuffer();G.__webglFaceBuffer=e.createBuffer();G.__webglLineBuffer=e.createBuffer();if(G.numMorphTargets){y=v=void 0;G.__webglMorphTargetsBuffers=[];v=0;for(y=G.numMorphTargets;v<y;v++)G.__webglMorphTargetsBuffers.push(e.createBuffer())}H.info.memory.geometries++;C=i;t=C.geometry;v=F.faces3;D=F.faces4;
|
|
|
|
|
G=v.length*3+D.length*4;y=v.length*1+D.length*2;D=v.length*3+D.length*4;v=d(C,F);n=g(v);q=c(v);J=f(v);F.__vertexArray=new Float32Array(G*3);if(q)F.__normalArray=new Float32Array(G*3);if(t.hasTangents)F.__tangentArray=new Float32Array(G*4);if(J)F.__colorArray=new Float32Array(G*3);if(n){if(t.faceUvs.length>0||t.faceVertexUvs.length>0)F.__uvArray=new Float32Array(G*2);if(t.faceUvs.length>1||t.faceVertexUvs.length>1)F.__uv2Array=new Float32Array(G*2)}if(C.geometry.skinWeights.length&&C.geometry.skinIndices.length)F.__skinVertexAArray=
|
|
|
|
|
new Float32Array(G*4),F.__skinVertexBArray=new Float32Array(G*4),F.__skinIndexArray=new Float32Array(G*4),F.__skinWeightArray=new Float32Array(G*4);F.__faceArray=new Uint16Array(y*3);F.__lineArray=new Uint16Array(D*2);if(F.numMorphTargets){F.__morphTargetsArrays=[];C=0;for(t=F.numMorphTargets;C<t;C++)F.__morphTargetsArrays.push(new Float32Array(G*3))}F.__webglFaceCount=y*3;F.__webglLineCount=D*2;if(v.attributes){if(F.__webglCustomAttributesList===void 0)F.__webglCustomAttributesList=[];y=void 0;for(y in v.attributes){var C=
|
|
|
|
|
v.attributes[y],t={},ka;for(ka in C)t[ka]=C[ka];if(!t.__webglInitialized||t.createUniqueBuffers)t.__webglInitialized=!0,D=1,t.type==="v2"?D=2:t.type==="v3"?D=3:t.type==="v4"?D=4:t.type==="c"&&(D=3),t.size=D,t.array=new Float32Array(G*D),t.buffer=e.createBuffer(),t.buffer.belongsToAttribute=y,C.needsUpdate=!0,t.__original=C;F.__webglCustomAttributesList.push(t)}}F.__inittedArrays=!0;l.__dirtyVertices=!0;l.__dirtyMorphTargets=!0;l.__dirtyElements=!0;l.__dirtyUvs=!0;l.__dirtyNormals=!0;l.__dirtyTangents=
|
|
|
|
|
!0;l.__dirtyColors=!0}}}else if(i instanceof THREE.Ribbon){if(l=i.geometry,!l.__webglVertexBuffer)F=l,F.__webglVertexBuffer=e.createBuffer(),F.__webglColorBuffer=e.createBuffer(),H.info.memory.geometries++,F=l,G=F.vertices.length,F.__vertexArray=new Float32Array(G*3),F.__colorArray=new Float32Array(G*3),F.__webglVertexCount=G,l.__dirtyVertices=!0,l.__dirtyColors=!0}else if(i instanceof THREE.Line){if(l=i.geometry,!l.__webglVertexBuffer)F=l,F.__webglVertexBuffer=e.createBuffer(),F.__webglColorBuffer=
|
|
|
|
|
e.createBuffer(),H.info.memory.geometries++,F=l,G=i,v=F.vertices.length,F.__vertexArray=new Float32Array(v*3),F.__colorArray=new Float32Array(v*3),F.__webglLineCount=v,b(F,G),l.__dirtyVertices=!0,l.__dirtyColors=!0}else if(i instanceof THREE.ParticleSystem&&(l=i.geometry,!l.__webglVertexBuffer))F=l,F.__webglVertexBuffer=e.createBuffer(),F.__webglColorBuffer=e.createBuffer(),H.info.geometries++,F=l,G=i,v=F.vertices.length,F.__vertexArray=new Float32Array(v*3),F.__colorArray=new Float32Array(v*3),F.__sortArray=
|
|
|
|
|
[],F.__webglParticleCount=v,b(F,G),l.__dirtyVertices=!0,l.__dirtyColors=!0;if(!i.__webglActive){if(i instanceof THREE.Mesh)if(l=i.geometry,l instanceof THREE.BufferGeometry)p(j.__webglObjects,l,i);else for(k in l.geometryGroups)F=l.geometryGroups[k],p(j.__webglObjects,F,i);else i instanceof THREE.Ribbon||i instanceof THREE.Line||i instanceof THREE.ParticleSystem?(l=i.geometry,p(j.__webglObjects,l,i)):THREE.MarchingCubes!==void 0&&i instanceof THREE.MarchingCubes||i.immediateRenderCallback?j.__webglObjectsImmediate.push({object:i,
|
|
|
|
|
opaque:null,transparent:null}):i instanceof THREE.Sprite?j.__webglSprites.push(i):i instanceof THREE.LensFlare&&j.__webglFlares.push(i);i.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;)i=a.__objectsRemoved[0],j=a,i instanceof THREE.Mesh||i instanceof THREE.ParticleSystem||i instanceof THREE.Ribbon||i instanceof THREE.Line?m(j.__webglObjects,i):i instanceof THREE.Sprite?E(j.__webglSprites,i):i instanceof THREE.LensFlare?E(j.__webglFlares,i):(i instanceof THREE.MarchingCubes||
|
|
|
|
|
i.immediateRenderCallback)&&m(j.__webglObjectsImmediate,i),i.__webglActive=!1,a.__objectsRemoved.splice(0,1);i=0;for(j=a.__webglObjects.length;i<j;i++)if(ka=a.__webglObjects[i].object,k=ka.geometry,l=y=v=void 0,ka instanceof THREE.Mesh)if(k instanceof THREE.BufferGeometry)k.__dirtyVertices=!1,k.__dirtyElements=!1,k.__dirtyUvs=!1,k.__dirtyNormals=!1,k.__dirtyColors=!1;else{F=0;for(G=k.geometryGroupsList.length;F<G;F++)if(v=k.geometryGroupsList[F],l=d(ka,v),y=l.attributes&&r(l),k.__dirtyVertices||k.__dirtyMorphTargets||
|
|
|
|
|
k.__dirtyElements||k.__dirtyUvs||k.__dirtyNormals||k.__dirtyColors||k.__dirtyTangents||y){var M=ka,y=e.DYNAMIC_DRAW,C=!k.dynamic,n=l;if(v.__inittedArrays){var t=c(n),D=f(n),O=g(n),Q=t===THREE.SmoothShading,I=q=n=void 0,u=void 0,ba=void 0,N=void 0,x=void 0,U=void 0,P=void 0,V=I=void 0,z=void 0,A=void 0,B=void 0,da=u=void 0,ea=void 0,la=void 0,W=u=P=void 0,X=void 0,R=B=A=z=x=void 0,K=u=B=A=z=R=B=A=z=R=B=A=z=void 0,L=void 0,T=N=void 0,Z=void 0,$=void 0,ma=void 0,fa=void 0,ja=V=$=L=0,ha=0,ca=K=I=0,S=
|
|
|
|
|
x=da=0,s=0,ga=void 0,S=v.__vertexArray,Z=v.__uvArray,s=v.__uv2Array,T=v.__normalArray,ba=v.__tangentArray,ea=v.__colorArray,W=v.__skinVertexAArray,X=v.__skinVertexBArray,U=v.__skinIndexArray,ia=v.__skinWeightArray,R=v.__morphTargetsArrays,J=v.__webglCustomAttributesList,o=void 0,o=v.__faceArray,ga=v.__lineArray,la=M.geometry,ra=la.__dirtyElements,ua=la.__dirtyUvs,N=la.__dirtyNormals,P=la.__dirtyTangents,xa=la.__dirtyColors,ma=la.__dirtyMorphTargets,fa=la.vertices,M=v.faces3,Y=v.faces4,aa=la.faces,
|
|
|
|
|
qa=la.faceVertexUvs[0],sa=la.faceVertexUvs[1],oa=la.skinVerticesA,pa=la.skinVerticesB,va=la.skinIndices,ta=la.skinWeights,wa=la.morphTargets;if(la.__dirtyVertices){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=fa[u.a].position,A=fa[u.b].position,B=fa[u.c].position,S[$]=z.x,S[$+1]=z.y,S[$+2]=z.z,S[$+3]=A.x,S[$+4]=A.y,S[$+5]=A.z,S[$+6]=B.x,S[$+7]=B.y,S[$+8]=B.z,$+=9;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=fa[u.a].position,A=fa[u.b].position,B=fa[u.c].position,u=fa[u.d].position,S[$]=z.x,S[$+1]=z.y,S[$+2]=
|
|
|
|
|
z.z,S[$+3]=A.x,S[$+4]=A.y,S[$+5]=A.z,S[$+6]=B.x,S[$+7]=B.y,S[$+8]=B.z,S[$+9]=u.x,S[$+10]=u.y,S[$+11]=u.z,$+=12;e.bindBuffer(e.ARRAY_BUFFER,v.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,S,y)}if(ma){$=0;for(ma=wa.length;$<ma;$++){n=S=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=wa[$].vertices[u.a].position,A=wa[$].vertices[u.b].position,B=wa[$].vertices[u.c].position,fa=R[$],fa[S]=z.x,fa[S+1]=z.y,fa[S+2]=z.z,fa[S+3]=A.x,fa[S+4]=A.y,fa[S+5]=A.z,fa[S+6]=B.x,fa[S+7]=B.y,fa[S+8]=B.z,S+=9;n=0;for(q=Y.length;n<
|
|
|
|
|
q;n++)u=aa[Y[n]],z=wa[$].vertices[u.a].position,A=wa[$].vertices[u.b].position,B=wa[$].vertices[u.c].position,u=wa[$].vertices[u.d].position,fa=R[$],fa[S]=z.x,fa[S+1]=z.y,fa[S+2]=z.z,fa[S+3]=A.x,fa[S+4]=A.y,fa[S+5]=A.z,fa[S+6]=B.x,fa[S+7]=B.y,fa[S+8]=B.z,fa[S+9]=u.x,fa[S+10]=u.y,fa[S+11]=u.z,S+=12;e.bindBuffer(e.ARRAY_BUFFER,v.__webglMorphTargetsBuffers[$]);e.bufferData(e.ARRAY_BUFFER,R[$],y)}}if(ta.length){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=ta[u.a],A=ta[u.b],B=ta[u.c],ia[x]=z.x,ia[x+1]=z.y,
|
|
|
|
|
ia[x+2]=z.z,ia[x+3]=z.w,ia[x+4]=A.x,ia[x+5]=A.y,ia[x+6]=A.z,ia[x+7]=A.w,ia[x+8]=B.x,ia[x+9]=B.y,ia[x+10]=B.z,ia[x+11]=B.w,z=va[u.a],A=va[u.b],B=va[u.c],U[x]=z.x,U[x+1]=z.y,U[x+2]=z.z,U[x+3]=z.w,U[x+4]=A.x,U[x+5]=A.y,U[x+6]=A.z,U[x+7]=A.w,U[x+8]=B.x,U[x+9]=B.y,U[x+10]=B.z,U[x+11]=B.w,z=oa[u.a],A=oa[u.b],B=oa[u.c],W[x]=z.x,W[x+1]=z.y,W[x+2]=z.z,W[x+3]=1,W[x+4]=A.x,W[x+5]=A.y,W[x+6]=A.z,W[x+7]=1,W[x+8]=B.x,W[x+9]=B.y,W[x+10]=B.z,W[x+11]=1,z=pa[u.a],A=pa[u.b],B=pa[u.c],X[x]=z.x,X[x+1]=z.y,X[x+2]=z.z,
|
|
|
|
|
X[x+3]=1,X[x+4]=A.x,X[x+5]=A.y,X[x+6]=A.z,X[x+7]=1,X[x+8]=B.x,X[x+9]=B.y,X[x+10]=B.z,X[x+11]=1,x+=12;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=ta[u.a],A=ta[u.b],B=ta[u.c],R=ta[u.d],ia[x]=z.x,ia[x+1]=z.y,ia[x+2]=z.z,ia[x+3]=z.w,ia[x+4]=A.x,ia[x+5]=A.y,ia[x+6]=A.z,ia[x+7]=A.w,ia[x+8]=B.x,ia[x+9]=B.y,ia[x+10]=B.z,ia[x+11]=B.w,ia[x+12]=R.x,ia[x+13]=R.y,ia[x+14]=R.z,ia[x+15]=R.w,z=va[u.a],A=va[u.b],B=va[u.c],R=va[u.d],U[x]=z.x,U[x+1]=z.y,U[x+2]=z.z,U[x+3]=z.w,U[x+4]=A.x,U[x+5]=A.y,U[x+6]=A.z,U[x+7]=A.w,
|
|
|
|
|
U[x+8]=B.x,U[x+9]=B.y,U[x+10]=B.z,U[x+11]=B.w,U[x+12]=R.x,U[x+13]=R.y,U[x+14]=R.z,U[x+15]=R.w,z=oa[u.a],A=oa[u.b],B=oa[u.c],R=oa[u.d],W[x]=z.x,W[x+1]=z.y,W[x+2]=z.z,W[x+3]=1,W[x+4]=A.x,W[x+5]=A.y,W[x+6]=A.z,W[x+7]=1,W[x+8]=B.x,W[x+9]=B.y,W[x+10]=B.z,W[x+11]=1,W[x+12]=R.x,W[x+13]=R.y,W[x+14]=R.z,W[x+15]=1,z=pa[u.a],A=pa[u.b],B=pa[u.c],u=pa[u.d],X[x]=z.x,X[x+1]=z.y,X[x+2]=z.z,X[x+3]=1,X[x+4]=A.x,X[x+5]=A.y,X[x+6]=A.z,X[x+7]=1,X[x+8]=B.x,X[x+9]=B.y,X[x+10]=B.z,X[x+11]=1,X[x+12]=u.x,X[x+13]=u.y,X[x+14]=
|
|
|
|
|
u.z,X[x+15]=1,x+=16;x>0&&(e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinVertexABuffer),e.bufferData(e.ARRAY_BUFFER,W,y),e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinVertexBBuffer),e.bufferData(e.ARRAY_BUFFER,X,y),e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinIndicesBuffer),e.bufferData(e.ARRAY_BUFFER,U,y),e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinWeightsBuffer),e.bufferData(e.ARRAY_BUFFER,ia,y))}if(xa&&D){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],x=u.vertexColors,U=u.color,x.length===3&&D===THREE.VertexColors?(u=x[0],
|
|
|
|
|
W=x[1],X=x[2]):X=W=u=U,ea[da]=u.r,ea[da+1]=u.g,ea[da+2]=u.b,ea[da+3]=W.r,ea[da+4]=W.g,ea[da+5]=W.b,ea[da+6]=X.r,ea[da+7]=X.g,ea[da+8]=X.b,da+=9;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],x=u.vertexColors,U=u.color,x.length===4&&D===THREE.VertexColors?(u=x[0],W=x[1],X=x[2],x=x[3]):x=X=W=u=U,ea[da]=u.r,ea[da+1]=u.g,ea[da+2]=u.b,ea[da+3]=W.r,ea[da+4]=W.g,ea[da+5]=W.b,ea[da+6]=X.r,ea[da+7]=X.g,ea[da+8]=X.b,ea[da+9]=x.r,ea[da+10]=x.g,ea[da+11]=x.b,da+=12;da>0&&(e.bindBuffer(e.ARRAY_BUFFER,v.__webglColorBuffer),
|
|
|
|
|
e.bufferData(e.ARRAY_BUFFER,ea,y))}if(P&&la.hasTangents){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],P=u.vertexTangents,da=P[0],ea=P[1],la=P[2],ba[K]=da.x,ba[K+1]=da.y,ba[K+2]=da.z,ba[K+3]=da.w,ba[K+4]=ea.x,ba[K+5]=ea.y,ba[K+6]=ea.z,ba[K+7]=ea.w,ba[K+8]=la.x,ba[K+9]=la.y,ba[K+10]=la.z,ba[K+11]=la.w,K+=12;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],P=u.vertexTangents,da=P[0],ea=P[1],la=P[2],P=P[3],ba[K]=da.x,ba[K+1]=da.y,ba[K+2]=da.z,ba[K+3]=da.w,ba[K+4]=ea.x,ba[K+5]=ea.y,ba[K+6]=ea.z,ba[K+7]=ea.w,ba[K+8]=la.x,
|
|
|
|
|
ba[K+9]=la.y,ba[K+10]=la.z,ba[K+11]=la.w,ba[K+12]=P.x,ba[K+13]=P.y,ba[K+14]=P.z,ba[K+15]=P.w,K+=16;e.bindBuffer(e.ARRAY_BUFFER,v.__webglTangentBuffer);e.bufferData(e.ARRAY_BUFFER,ba,y)}if(N&&t){n=0;for(q=M.length;n<q;n++)if(u=aa[M[n]],ba=u.vertexNormals,N=u.normal,ba.length===3&&Q)for(K=0;K<3;K++)N=ba[K],T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;else for(K=0;K<3;K++)T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;n=0;for(q=Y.length;n<q;n++)if(u=aa[Y[n]],ba=u.vertexNormals,N=u.normal,ba.length===4&&Q)for(K=0;K<4;K++)N=
|
|
|
|
|
ba[K],T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;else for(K=0;K<4;K++)T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;e.bindBuffer(e.ARRAY_BUFFER,v.__webglNormalBuffer);e.bufferData(e.ARRAY_BUFFER,T,y)}if(ua&&qa&&O){n=0;for(q=M.length;n<q;n++)if(I=M[n],I=qa[I],I!==void 0)for(K=0;K<3;K++)T=I[K],Z[V]=T.u,Z[V+1]=T.v,V+=2;n=0;for(q=Y.length;n<q;n++)if(I=Y[n],I=qa[I],I!==void 0)for(K=0;K<4;K++)T=I[K],Z[V]=T.u,Z[V+1]=T.v,V+=2;V>0&&(e.bindBuffer(e.ARRAY_BUFFER,v.__webglUVBuffer),e.bufferData(e.ARRAY_BUFFER,Z,y))}if(ua&&sa&&
|
|
|
|
|
O){n=0;for(q=M.length;n<q;n++)if(I=M[n],V=sa[I],V!==void 0)for(K=0;K<3;K++)Z=V[K],s[ja]=Z.u,s[ja+1]=Z.v,ja+=2;n=0;for(q=Y.length;n<q;n++)if(I=Y[n],V=sa[I],V!==void 0)for(K=0;K<4;K++)Z=V[K],s[ja]=Z.u,s[ja+1]=Z.v,ja+=2;ja>0&&(e.bindBuffer(e.ARRAY_BUFFER,v.__webglUV2Buffer),e.bufferData(e.ARRAY_BUFFER,s,y))}if(ra){n=0;for(q=M.length;n<q;n++)o[ha]=L,o[ha+1]=L+1,o[ha+2]=L+2,ha+=3,ga[ca]=L,ga[ca+1]=L+1,ga[ca+2]=L,ga[ca+3]=L+2,ga[ca+4]=L+1,ga[ca+5]=L+2,ca+=6,L+=3;n=0;for(q=Y.length;n<q;n++)o[ha]=L,o[ha+
|
|
|
|
|
1]=L+1,o[ha+2]=L+3,o[ha+3]=L+1,o[ha+4]=L+2,o[ha+5]=L+3,ha+=6,ga[ca]=L,ga[ca+1]=L+1,ga[ca+2]=L,ga[ca+3]=L+3,ga[ca+4]=L+1,ga[ca+5]=L+2,ga[ca+6]=L+2,ga[ca+7]=L+3,ca+=8,L+=4;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,v.__webglFaceBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,o,y);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,v.__webglLineBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,ga,y)}if(J){K=0;for(L=J.length;K<L;K++)if(o=J[K],o.__original.needsUpdate){s=0;if(o.size===1)if(o.boundTo===void 0||o.boundTo==="vertices"){n=
|
|
|
|
|
0;for(q=M.length;n<q;n++)u=aa[M[n]],o.array[s]=o.value[u.a],o.array[s+1]=o.value[u.b],o.array[s+2]=o.value[u.c],s+=3;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],o.array[s]=o.value[u.a],o.array[s+1]=o.value[u.b],o.array[s+2]=o.value[u.c],o.array[s+3]=o.value[u.d],s+=4}else{if(o.boundTo==="faces"){n=0;for(q=M.length;n<q;n++)ga=o.value[M[n]],o.array[s]=ga,o.array[s+1]=ga,o.array[s+2]=ga,s+=3;n=0;for(q=Y.length;n<q;n++)ga=o.value[Y[n]],o.array[s]=ga,o.array[s+1]=ga,o.array[s+2]=ga,o.array[s+3]=ga,s+=4}}else if(o.size===
|
|
|
|
|
2)if(o.boundTo===void 0||o.boundTo==="vertices"){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+5]=B.y,s+=6;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],u=o.value[u.d],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+5]=B.y,o.array[s+6]=u.x,o.array[s+7]=u.y,s+=8}else{if(o.boundTo==="faces"){n=
|
|
|
|
|
0;for(q=M.length;n<q;n++)B=A=z=ga=o.value[M[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+5]=B.y,s+=6;n=0;for(q=Y.length;n<q;n++)u=B=A=z=ga=o.value[Y[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+5]=B.y,o.array[s+6]=u.x,o.array[s+7]=u.y,s+=8}}else if(o.size===3)if(t=o.type==="c"?["r","g","b"]:["x","y","z"],o.boundTo===void 0||o.boundTo==="vertices"){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=o.value[u.a],
|
|
|
|
|
A=o.value[u.b],B=o.value[u.c],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],s+=9;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],u=o.value[u.d],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],
|
|
|
|
|
o.array[s+9]=u[t[0]],o.array[s+10]=u[t[1]],o.array[s+11]=u[t[2]],s+=12}else{if(o.boundTo==="faces"){n=0;for(q=M.length;n<q;n++)B=A=z=ga=o.value[M[n]],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],s+=9;n=0;for(q=Y.length;n<q;n++)u=B=A=z=ga=o.value[Y[n]],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+
|
|
|
|
|
5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],o.array[s+9]=u[t[0]],o.array[s+10]=u[t[1]],o.array[s+11]=u[t[2]],s+=12}}else if(o.size===4)if(o.boundTo===void 0||o.boundTo==="vertices"){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,s+=
|
|
|
|
|
12;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],u=o.value[u.d],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,o.array[s+12]=u.x,o.array[s+13]=u.y,o.array[s+14]=u.z,o.array[s+15]=u.w,s+=16}else if(o.boundTo==="faces"){n=0;for(q=M.length;n<q;n++)B=A=z=ga=o.value[M[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+
|
|
|
|
|
2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,s+=12;n=0;for(q=Y.length;n<q;n++)u=B=A=z=ga=o.value[Y[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,o.array[s+12]=u.x,o.array[s+13]=u.y,o.array[s+14]=u.z,o.array[s+15]=u.w,s+=16}e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
|
|
o.buffer);e.bufferData(e.ARRAY_BUFFER,o.array,y)}}C&&(delete v.__inittedArrays,delete v.__colorArray,delete v.__normalArray,delete v.__tangentArray,delete v.__uvArray,delete v.__uv2Array,delete v.__faceArray,delete v.__vertexArray,delete v.__lineArray,delete v.__skinVertexAArray,delete v.__skinVertexBArray,delete v.__skinIndexArray,delete v.__skinWeightArray)}}k.__dirtyVertices=!1;k.__dirtyMorphTargets=!1;k.__dirtyElements=!1;k.__dirtyUvs=!1;k.__dirtyNormals=!1;k.__dirtyColors=!1;k.__dirtyTangents=
|
|
|
|
|
!1;l.attributes&&w(l)}else if(ka instanceof THREE.Ribbon){if(k.__dirtyVertices||k.__dirtyColors){l=k;ka=e.DYNAMIC_DRAW;t=F=t=C=C=void 0;D=l.vertices;G=l.colors;n=D.length;v=G.length;q=l.__vertexArray;y=l.__colorArray;J=l.__dirtyColors;if(l.__dirtyVertices){for(C=0;C<n;C++)t=D[C].position,F=C*3,q[F]=t.x,q[F+1]=t.y,q[F+2]=t.z;e.bindBuffer(e.ARRAY_BUFFER,l.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,q,ka)}if(J){for(C=0;C<v;C++)t=G[C],F=C*3,y[F]=t.r,y[F+1]=t.g,y[F+2]=t.b;e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
|
|
l.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,y,ka)}}k.__dirtyVertices=!1;k.__dirtyColors=!1}else if(ka instanceof THREE.Line){l=d(ka,v);y=l.attributes&&r(l);if(k.__dirtyVertices||k.__dirtyColors||y){ka=k;F=e.DYNAMIC_DRAW;n=G=Q=D=O=void 0;D=ka.vertices;v=ka.colors;n=D.length;y=v.length;q=ka.__vertexArray;C=ka.__colorArray;J=ka.__dirtyColors;t=ka.__webglCustomAttributesList;L=aa=Y=M=Q=O=void 0;if(ka.__dirtyVertices){for(O=0;O<n;O++)Q=D[O].position,G=O*3,q[G]=Q.x,q[G+1]=Q.y,q[G+2]=Q.z;e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
|
|
ka.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,q,F)}if(J){for(D=0;D<y;D++)n=v[D],G=D*3,C[G]=n.r,C[G+1]=n.g,C[G+2]=n.b;e.bindBuffer(e.ARRAY_BUFFER,ka.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,C,F)}if(t){O=0;for(Q=t.length;O<Q;O++)if(L=t[O],L.needsUpdate&&(L.boundTo===void 0||L.boundTo==="vertices")){G=0;Y=L.value.length;if(L.size===1)for(M=0;M<Y;M++)L.array[M]=L.value[M];else if(L.size===2)for(M=0;M<Y;M++)aa=L.value[M],L.array[G]=aa.x,L.array[G+1]=aa.y,G+=2;else if(L.size===3)if(L.type===
|
|
|
|
|
"c")for(M=0;M<Y;M++)aa=L.value[M],L.array[G]=aa.r,L.array[G+1]=aa.g,L.array[G+2]=aa.b,G+=3;else for(M=0;M<Y;M++)aa=L.value[M],L.array[G]=aa.x,L.array[G+1]=aa.y,L.array[G+2]=aa.z,G+=3;else if(L.size===4)for(M=0;M<Y;M++)aa=L.value[M],L.array[G]=aa.x,L.array[G+1]=aa.y,L.array[G+2]=aa.z,L.array[G+3]=aa.w,G+=4;e.bindBuffer(e.ARRAY_BUFFER,L.buffer);e.bufferData(e.ARRAY_BUFFER,L.array,F)}}}k.__dirtyVertices=!1;k.__dirtyColors=!1;l.attributes&&w(l)}else if(ka instanceof THREE.ParticleSystem)l=d(ka,v),y=l.attributes&&
|
|
|
|
|
r(l),(k.__dirtyVertices||k.__dirtyColors||ka.sortParticles||y)&&h(k,e.DYNAMIC_DRAW,ka),k.__dirtyVertices=!1,k.__dirtyColors=!1,l.attributes&&w(l)};this.initMaterial=function(a,b,c,d){var f,g,h,i;a instanceof THREE.MeshDepthMaterial?i="depth":a instanceof THREE.MeshNormalMaterial?i="normal":a instanceof THREE.MeshBasicMaterial?i="basic":a instanceof THREE.MeshLambertMaterial?i="lambert":a instanceof THREE.MeshPhongMaterial?i="phong":a instanceof THREE.LineBasicMaterial?i="basic":a instanceof THREE.ParticleBasicMaterial&&
|
|
|
|
|
(i="particle_basic");if(i){var j=THREE.ShaderLib[i];a.uniforms=THREE.UniformsUtils.clone(j.uniforms);a.vertexShader=j.vertexShader;a.fragmentShader=j.fragmentShader}var k,l,m;k=m=j=0;for(l=b.length;k<l;k++)h=b[k],h instanceof THREE.SpotLight&&m++,h instanceof THREE.DirectionalLight&&m++,h instanceof THREE.PointLight&&j++;j+m<=va?k=m:(k=Math.ceil(va*m/(j+m)),j=va-k);h={directional:k,point:j};j=m=0;for(k=b.length;j<k;j++)l=b[j],l instanceof THREE.SpotLight&&l.castShadow&&m++;var n=50;if(d!==void 0&&
|
|
|
|
|
d instanceof THREE.SkinnedMesh)n=d.bones.length;var q;a:{k=a.fragmentShader;l=a.vertexShader;var j=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,morphTargets:a.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:h.directional,maxPointLights:h.point,maxBones:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapWidth:this.shadowMapWidth,
|
|
|
|
|
shadowMapHeight:this.shadowMapHeight,maxShadows:m,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel},p,d=[];i?d.push(i):(d.push(k),d.push(l));for(p in c)d.push(p),d.push(c[p]);i=d.join();p=0;for(d=ya.length;p<d;p++)if(ya[p].code===i){q=ya[p].program;break a}p=e.createProgram();d=[Ma?"#define VERTEX_TEXTURES":"",H.gammaInput?"#define GAMMA_INPUT":"",H.gammaOutput?"#define GAMMA_OUTPUT":"",H.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,
|
|
|
|
|
"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":
|
|
|
|
|
"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
|
|
THREE.MeshPhongMaterial)j.shininess.value=c.shininess,H.gammaInput?(j.ambient.value.copyGammaToLinear(c.ambient),j.specular.value.copyGammaToLinear(c.specular)):(j.ambient.value=c.ambient,j.specular.value=c.specular),c.wrapAround&&j.wrapRGB.value.copy(c.wrapRGB);else if(c instanceof THREE.MeshLambertMaterial)H.gammaInput?j.ambient.value.copyGammaToLinear(c.ambient):j.ambient.value=c.ambient,c.wrapAround&&j.wrapRGB.value.copy(c.wrapRGB);else if(c instanceof THREE.MeshDepthMaterial)j.mNear.value=a.near,
|
|
|
|
|
j.mFar.value=a.far,j.opacity.value=c.opacity;else if(c instanceof THREE.MeshNormalMaterial)j.opacity.value=c.opacity;if(f.receiveShadow&&!c._shadowPass&&j.shadowMatrix){for(b=0;b<H.shadowMapPlugin.shadowMatrix.length;b++)j.shadowMatrix.value[b]=H.shadowMapPlugin.shadowMatrix[b],j.shadowMap.texture[b]=H.shadowMapPlugin.shadowMap[b];j.shadowDarkness.value=H.shadowMapDarkness;j.shadowBias.value=H.shadowMapBias}b=c.uniformsList;j=0;for(d=b.length;j<d;j++)if(n=g.uniforms[b[j][1]])if(m=b[j][0],q=m.type,
|
|
|
|
|
i=m.value,q==="i")e.uniform1i(n,i);else if(q==="f")e.uniform1f(n,i);else if(q==="v2")e.uniform2f(n,i.x,i.y);else if(q==="v3")e.uniform3f(n,i.x,i.y,i.z);else if(q==="v4")e.uniform4f(n,i.x,i.y,i.z,i.w);else if(q==="c")e.uniform3f(n,i.r,i.g,i.b);else if(q==="fv1")e.uniform1fv(n,i);else if(q==="fv")e.uniform3fv(n,i);else if(q==="v3v"){if(!m._array)m._array=new Float32Array(3*i.length);q=0;for(r=i.length;q<r;q++)w=q*3,m._array[w]=i[q].x,m._array[w+1]=i[q].y,m._array[w+2]=i[q].z;e.uniform3fv(n,m._array)}else if(q===
|
|
|
|
|
"m4"){if(!m._array)m._array=new Float32Array(16);i.flattenToArray(m._array);e.uniformMatrix4fv(n,!1,m._array)}else if(q==="m4v"){if(!m._array)m._array=new Float32Array(16*i.length);q=0;for(r=i.length;q<r;q++)i[q].flattenToArrayOffset(m._array,q*16);e.uniformMatrix4fv(n,!1,m._array)}else if(q==="t"){if(e.uniform1i(n,i),n=m.texture)if(n.image instanceof Array&&n.image.length===6){if(m=n,m.image.length===6)if(m.needsUpdate){if(!m.image.__webglTextureCube)m.image.__webglTextureCube=e.createTexture();
|
|
|
|
|
e.activeTexture(e.TEXTURE0+i);e.bindTexture(e.TEXTURE_CUBE_MAP,m.image.__webglTextureCube);i=C(e.TEXTURE_CUBE_MAP,m,m.image[0]);n=Q(m.format);q=Q(m.type);for(r=0;r<6;r++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,n,n,q,m.image[r]);i&&e.generateMipmap(e.TEXTURE_CUBE_MAP);m.needsUpdate=!1}else e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_CUBE_MAP,m.image.__webglTextureCube)}else n instanceof THREE.WebGLRenderTargetCube?(m=n,e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_CUBE_MAP,
|
|
|
|
|
m.__webglTexture)):H.setTexture(n,i)}else if(q==="tv"){if(!m._array){m._array=[];q=0;for(r=m.texture.length;q<r;q++)m._array[q]=i+q}e.uniform1iv(n,m._array);q=0;for(r=m.texture.length;q<r;q++)(n=m.texture[q])&&H.setTexture(n,m._array[q])}(c instanceof THREE.ShaderMaterial||c instanceof THREE.MeshPhongMaterial||c.envMap)&&h.cameraPosition!==null&&e.uniform3f(h.cameraPosition,a.position.x,a.position.y,a.position.z);(c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof
|
|
|
|
|
THREE.ShaderMaterial||c.skinning)&&h.viewMatrix!==null&&e.uniformMatrix4fv(h.viewMatrix,!1,a._viewMatrixArray);c.skinning&&(e.uniformMatrix4fv(h.cameraInverseMatrix,!1,a._viewMatrixArray),e.uniformMatrix4fv(h.boneGlobalMatrices,!1,f.boneMatrices))}e.uniformMatrix4fv(h.modelViewMatrix,!1,f._modelViewMatrixArray);h.normalMatrix&&e.uniformMatrix3fv(h.normalMatrix,!1,f._normalMatrixArray);(c instanceof THREE.ShaderMaterial||c.envMap||c.skinning||f.receiveShadow)&&h.objectMatrix!==null&&e.uniformMatrix4fv(h.objectMatrix,
|
|
|
|
|
!1,f._objectMatrixArray);return g}function J(a,b){a._modelViewMatrix.multiplyToArray(b.matrixWorldInverse,a.matrixWorld,a._modelViewMatrixArray);var c=THREE.Matrix4.makeInvert3x3(a._modelViewMatrix);c&&c.transposeIntoArray(a._normalMatrixArray)}function O(a){wa!==a&&(e.depthMask(a),wa=a)}function P(a,b,c){Ca!==a&&(a?e.enable(e.POLYGON_OFFSET_FILL):e.disable(e.POLYGON_OFFSET_FILL),Ca=a);if(a&&(za!==b||Aa!==c))e.polygonOffset(b,c),za=b,Aa=c}function V(a,b){var c;a==="fragment"?c=e.createShader(e.FRAGMENT_SHADER):
|
|
|
|
|
a==="vertex"&&(c=e.createShader(e.VERTEX_SHADER));e.shaderSource(c,b);e.compileShader(c);if(!e.getShaderParameter(c,e.COMPILE_STATUS))return console.error(e.getShaderInfoLog(c)),console.error(b),null;return c}function C(a,b,c){return(c.width&c.width-1)===0&&(c.height&c.height-1)===0?(e.texParameteri(a,e.TEXTURE_WRAP_S,Q(b.wrapS)),e.texParameteri(a,e.TEXTURE_WRAP_T,Q(b.wrapT)),e.texParameteri(a,e.TEXTURE_MAG_FILTER,Q(b.magFilter)),e.texParameteri(a,e.TEXTURE_MIN_FILTER,Q(b.minFilter)),!0):(e.texParameteri(a,
|
|
|
|
|
e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(a,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(a,e.TEXTURE_MAG_FILTER,N(b.magFilter)),e.texParameteri(a,e.TEXTURE_MIN_FILTER,N(b.minFilter)),!1)}function D(a,b){e.bindRenderbuffer(e.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,b.width,b.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(e.renderbufferStorage(e.RENDERBUFFER,
|
|
|
|
|
e.DEPTH_STENCIL,b.width,b.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,a)):e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,b.width,b.height)}function N(a){switch(a){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return e.NEAREST;default:return e.LINEAR}}function Q(a){switch(a){case THREE.RepeatWrapping:return e.REPEAT;case THREE.ClampToEdgeWrapping:return e.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return e.MIRRORED_REPEAT;
|
|
|
|
|
case THREE.NearestFilter:return e.NEAREST;case THREE.NearestMipMapNearestFilter:return e.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return e.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return e.LINEAR;case THREE.LinearMipMapNearestFilter:return e.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return e.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return e.BYTE;case THREE.UnsignedByteType:return e.UNSIGNED_BYTE;case THREE.ShortType:return e.SHORT;case THREE.UnsignedShortType:return e.UNSIGNED_SHORT;
|
|
|
|
|
case THREE.IntType:return e.INT;case THREE.UnsignedShortType:return e.UNSIGNED_INT;case THREE.FloatType:return e.FLOAT;case THREE.AlphaFormat:return e.ALPHA;case THREE.RGBFormat:return e.RGB;case THREE.RGBAFormat:return e.RGBA;case THREE.LuminanceFormat:return e.LUMINANCE;case THREE.LuminanceAlphaFormat:return e.LUMINANCE_ALPHA}return 0}var a=a||{},ma=a.canvas!==void 0?a.canvas:document.createElement("canvas"),ua=a.precision!==void 0?a.precision:"mediump",ha=a.antialias!==void 0?a.antialias:!1,ca=
|
|
|
|
|
a.stencil!==void 0?a.stencil:!0,pa=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:!1,ja=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),xa=a.clearAlpha!==void 0?a.clearAlpha:0,va=a.maxLights!==void 0?a.maxLights:4;this.domElement=ma;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapBias=
|
|
|
|
|
0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowMapEnabled=!1;this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.maxMorphTargets=8;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var H=this,e,ya=[],T=null,qa=null,I=-1,R=null,na=0,ra=null,Z=null,sa=null,oa=null,wa=null,Ca=null,za=null,
|
|
|
|
|
Aa=null,ta=null,Ea=0,Fa=0,Ga=0,Ha=0,Ja=0,Ka=0,Ia=new THREE.Frustum,Da=new THREE.Matrix4,Ba=new THREE.Vector4,La={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}};e=function(){var a;try{if(!(a=ma.getContext("experimental-webgl",{antialias:ha,stencil:ca,preserveDrawingBuffer:pa})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+a.getParameter(a.VERSION)+" | "+a.getParameter(a.VENDOR)+" | "+a.getParameter(a.RENDERER)+
|
|
|
|
|
" | "+a.getParameter(a.SHADING_LANGUAGE_VERSION))}catch(b){console.error(b)}return a}();e.clearColor(0,0,0,1);e.clearDepth(1);e.clearStencil(0);e.enable(e.DEPTH_TEST);e.depthFunc(e.LEQUAL);e.frontFace(e.CCW);e.cullFace(e.BACK);e.enable(e.CULL_FACE);e.enable(e.BLEND);e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA);e.clearColor(ja.r,ja.g,ja.b,xa);this.context=e;var Ma=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;this.getContext=function(){return e};this.supportsVertexTextures=
|
|
|
|
|
function(){return Ma};this.setSize=function(a,b){ma.width=a;ma.height=b;this.setViewport(0,0,ma.width,ma.height)};this.setViewport=function(a,b,c,d){Ea=a;Fa=b;Ga=c;Ha=d;e.viewport(Ea,Fa,Ga,Ha)};this.setScissor=function(a,b,c,d){e.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?e.enable(e.SCISSOR_TEST):e.disable(e.SCISSOR_TEST)};this.setClearColorHex=function(a,b){ja.setHex(a);xa=b;e.clearColor(ja.r,ja.g,ja.b,xa)};this.setClearColor=function(a,b){ja.copy(a);xa=b;e.clearColor(ja.r,ja.g,ja.b,
|
|
|
|
|
xa)};this.getClearColor=function(){return ja};this.getClearAlpha=function(){return xa};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d|=e.COLOR_BUFFER_BIT;if(b===void 0||b)d|=e.DEPTH_BUFFER_BIT;if(c===void 0||c)d|=e.STENCIL_BUFFER_BIT;e.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=
|
|
|
|
|
function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrixArray,delete a._modelViewMatrixArray,delete a._objectMatrixArray,a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];e.deleteBuffer(c.__webglVertexBuffer);e.deleteBuffer(c.__webglNormalBuffer);e.deleteBuffer(c.__webglTangentBuffer);e.deleteBuffer(c.__webglColorBuffer);e.deleteBuffer(c.__webglUVBuffer);e.deleteBuffer(c.__webglUV2Buffer);e.deleteBuffer(c.__webglSkinVertexABuffer);
|
|
|
|
|
e.deleteBuffer(c.__webglSkinVertexBBuffer);e.deleteBuffer(c.__webglSkinIndicesBuffer);e.deleteBuffer(c.__webglSkinWeightsBuffer);e.deleteBuffer(c.__webglFaceBuffer);e.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var d=0,f=c.numMorphTargets;d<f;d++)e.deleteBuffer(c.__webglMorphTargetsBuffers[d]);if(c.__webglCustomAttributesList)for(d in d=void 0,c.__webglCustomAttributesList)e.deleteBuffer(c.__webglCustomAttributesList[d].buffer);H.info.memory.geometries--}else if(a instanceof THREE.Ribbon)a=
|
|
|
|
|
a.geometry,e.deleteBuffer(a.__webglVertexBuffer),e.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.Line)a=a.geometry,e.deleteBuffer(a.__webglVertexBuffer),e.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--;else if(a instanceof THREE.ParticleSystem)a=a.geometry,e.deleteBuffer(a.__webglVertexBuffer),e.deleteBuffer(a.__webglColorBuffer),H.info.memory.geometries--};this.deallocateTexture=function(a){if(a.__webglInit)a.__webglInit=!1,e.deleteTexture(a.__webglTexture),
|
|
|
|
|
H.info.memory.textures--};this.updateShadowMap=function(a,b){T=null;I=R=wa=oa=sa=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(!a.__webglVertexBuffer)a.__webglVertexBuffer=e.createBuffer();if(!a.__webglNormalBuffer)a.__webglNormalBuffer=e.createBuffer();a.hasPos&&(e.bindBuffer(e.ARRAY_BUFFER,a.__webglVertexBuffer),e.bufferData(e.ARRAY_BUFFER,a.positionArray,e.DYNAMIC_DRAW),e.enableVertexAttribArray(b.attributes.position),e.vertexAttribPointer(b.attributes.position,
|
|
|
|
|
3,e.FLOAT,!1,0,0));if(a.hasNormal){e.bindBuffer(e.ARRAY_BUFFER,a.__webglNormalBuffer);if(c===THREE.FlatShading){var d,f,g,h,i,j,m,k,l,n,q=a.count*3;for(n=0;n<q;n+=9)c=a.normalArray,d=c[n],f=c[n+1],g=c[n+2],h=c[n+3],j=c[n+4],k=c[n+5],i=c[n+6],m=c[n+7],l=c[n+8],d=(d+h+i)/3,f=(f+j+m)/3,g=(g+k+l)/3,c[n]=d,c[n+1]=f,c[n+2]=g,c[n+3]=d,c[n+4]=f,c[n+5]=g,c[n+6]=d,c[n+7]=f,c[n+8]=g}e.bufferData(e.ARRAY_BUFFER,a.normalArray,e.DYNAMIC_DRAW);e.enableVertexAttribArray(b.attributes.normal);e.vertexAttribPointer(b.attributes.normal,
|
|
|
|
|
3,e.FLOAT,!1,0,0)}e.drawArrays(e.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,f,g){if(d.opacity!==0&&(c=y(a,b,c,d,g),a=c.attributes,b=!1,d=f.id*16777215+c.id*2+(d.wireframe?1:0),d!==R&&(R=d,b=!0),g instanceof THREE.Mesh)){d=f.offsets;for(g=0;g<d.length;++g)b&&(e.bindBuffer(e.ARRAY_BUFFER,f.vertexPositionBuffer),e.vertexAttribPointer(a.position,f.vertexPositionBuffer.itemSize,e.FLOAT,!1,0,d[g].index*12),a.normal>=0&&f.vertexNormalBuffer&&(e.bindBuffer(e.ARRAY_BUFFER,f.vertexNormalBuffer),
|
|
|
|
|
e.vertexAttribPointer(a.normal,f.vertexNormalBuffer.itemSize,e.FLOAT,!1,0,d[g].index*12)),a.uv>=0&&f.vertexUvBuffer&&(f.vertexUvBuffer?(e.bindBuffer(e.ARRAY_BUFFER,f.vertexUvBuffer),e.vertexAttribPointer(a.uv,f.vertexUvBuffer.itemSize,e.FLOAT,!1,0,d[g].index*8),e.enableVertexAttribArray(a.uv)):e.disableVertexAttribArray(a.uv)),a.color>=0&&f.vertexColorBuffer&&(e.bindBuffer(e.ARRAY_BUFFER,f.vertexColorBuffer),e.vertexAttribPointer(a.color,f.vertexColorBuffer.itemSize,e.FLOAT,!1,0,d[g].index*16)),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,
|
|
|
|
|
f.vertexIndexBuffer)),e.drawElements(e.TRIANGLES,d[g].count,e.UNSIGNED_SHORT,d[g].start*2),H.info.render.calls++,H.info.render.vertices+=d[g].count,H.info.render.faces+=d[g].count/3}};this.renderBuffer=function(a,b,c,d,f,g){if(d.opacity!==0){var h,i,c=y(a,b,c,d,g),b=c.attributes,a=!1,c=f.id*16777215+c.id*2+(d.wireframe?1:0);c!==R&&(R=c,a=!0);if(!d.morphTargets&&b.position>=0)a&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglVertexBuffer),e.vertexAttribPointer(b.position,3,e.FLOAT,!1,0,0));else if(g.morphTargetBase){c=
|
|
|
|
|
d.program.attributes;g.morphTargetBase!==-1?(e.bindBuffer(e.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[g.morphTargetBase]),e.vertexAttribPointer(c.position,3,e.FLOAT,!1,0,0)):c.position>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglVertexBuffer),e.vertexAttribPointer(c.position,3,e.FLOAT,!1,0,0));if(g.morphTargetForcedOrder.length){h=0;var j=g.morphTargetForcedOrder;for(i=g.morphTargetInfluences;h<d.numSupportedMorphTargets&&h<j.length;)e.bindBuffer(e.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[j[h]]),e.vertexAttribPointer(c["morphTarget"+
|
|
|
|
|
h],3,e.FLOAT,!1,0,0),g.__webglMorphTargetInfluences[h]=i[j[h]],h++}else{var j=[],m=-1,k=0;i=g.morphTargetInfluences;var l,n=i.length;h=0;for(g.morphTargetBase!==-1&&(j[g.morphTargetBase]=!0);h<d.numSupportedMorphTargets;){for(l=0;l<n;l++)!j[l]&&i[l]>m&&(k=l,m=i[k]);e.bindBuffer(e.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[k]);e.vertexAttribPointer(c["morphTarget"+h],3,e.FLOAT,!1,0,0);g.__webglMorphTargetInfluences[h]=m;j[k]=1;m=-1;h++}}d.program.uniforms.morphTargetInfluences!==null&&e.uniform1fv(d.program.uniforms.morphTargetInfluences,
|
|
|
|
|
g.__webglMorphTargetInfluences)}if(a){if(f.__webglCustomAttributesList){h=0;for(i=f.__webglCustomAttributesList.length;h<i;h++)c=f.__webglCustomAttributesList[h],b[c.buffer.belongsToAttribute]>=0&&(e.bindBuffer(e.ARRAY_BUFFER,c.buffer),e.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,e.FLOAT,!1,0,0))}b.color>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglColorBuffer),e.vertexAttribPointer(b.color,3,e.FLOAT,!1,0,0));b.normal>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglNormalBuffer),e.vertexAttribPointer(b.normal,
|
|
|
|
|
3,e.FLOAT,!1,0,0));b.tangent>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglTangentBuffer),e.vertexAttribPointer(b.tangent,4,e.FLOAT,!1,0,0));b.uv>=0&&(f.__webglUVBuffer?(e.bindBuffer(e.ARRAY_BUFFER,f.__webglUVBuffer),e.vertexAttribPointer(b.uv,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(b.uv)):e.disableVertexAttribArray(b.uv));b.uv2>=0&&(f.__webglUV2Buffer?(e.bindBuffer(e.ARRAY_BUFFER,f.__webglUV2Buffer),e.vertexAttribPointer(b.uv2,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(b.uv2)):e.disableVertexAttribArray(b.uv2));
|
|
|
|
|
d.skinning&&b.skinVertexA>=0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0&&(e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinVertexABuffer),e.vertexAttribPointer(b.skinVertexA,4,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinVertexBBuffer),e.vertexAttribPointer(b.skinVertexB,4,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinIndicesBuffer),e.vertexAttribPointer(b.skinIndex,4,e.FLOAT,!1,0,0),e.bindBuffer(e.ARRAY_BUFFER,f.__webglSkinWeightsBuffer),e.vertexAttribPointer(b.skinWeight,
|
|
|
|
|
4,e.FLOAT,!1,0,0))}g instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==ta&&(e.lineWidth(d),ta=d),a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,f.__webglLineBuffer),e.drawElements(e.LINES,f.__webglLineCount,e.UNSIGNED_SHORT,0)):(a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,f.__webglFaceBuffer),e.drawElements(e.TRIANGLES,f.__webglFaceCount,e.UNSIGNED_SHORT,0)),H.info.render.calls++,H.info.render.vertices+=f.__webglFaceCount,H.info.render.faces+=f.__webglFaceCount/3):g instanceof THREE.Line?(g=g.type===
|
|
|
|
|
THREE.LineStrip?e.LINE_STRIP:e.LINES,d=d.linewidth,d!==ta&&(e.lineWidth(d),ta=d),e.drawArrays(g,0,f.__webglLineCount),H.info.render.calls++):g instanceof THREE.ParticleSystem?(e.drawArrays(e.POINTS,0,f.__webglParticleCount),H.info.render.calls++,H.info.render.points+=f.__webglParticleCount):g instanceof THREE.Ribbon&&(e.drawArrays(e.TRIANGLE_STRIP,0,f.__webglVertexCount),H.info.render.calls++)}};this.render=function(a,b,c,d){var f,g,h,m,p=a.lights,r=a.fog;I=-1;this.autoUpdateObjects&&this.initWebGLObjects(a);
|
|
|
|
|
b.parent===void 0&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),a.add(b));this.autoUpdateScene&&a.updateMatrixWorld();l(this.renderPluginsPre,a,b);H.info.render.calls=0;H.info.render.vertices=0;H.info.render.faces=0;H.info.render.points=0;b.matrixWorldInverse.getInverse(b.matrixWorld);if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);
|
|
|
|
|
b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Da.multiply(b.projectionMatrix,b.matrixWorldInverse);Ia.setFromMatrix(Da);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);m=a.__webglObjects;d=0;for(f=m.length;d<f;d++)if(g=m[d],h=g.object,g.render=!1,h.visible&&(!(h instanceof THREE.Mesh||h instanceof THREE.ParticleSystem)||!h.frustumCulled||Ia.contains(h))){h.matrixWorld.flattenToArray(h._objectMatrixArray);J(h,b);var t=
|
|
|
|
|
g,w=t.object,n=t.buffer,q=void 0,q=q=void 0,q=w.material;if(q instanceof THREE.MeshFaceMaterial){if(q=n.materialIndex,q>=0)q=w.geometry.materials[q],q.transparent?(t.transparent=q,t.opaque=null):(t.opaque=q,t.transparent=null)}else if(q)q.transparent?(t.transparent=q,t.opaque=null):(t.opaque=q,t.transparent=null);g.render=!0;if(this.sortObjects)h.renderDepth?g.z=h.renderDepth:(Ba.copy(h.position),Da.multiplyVector3(Ba),g.z=Ba.z)}this.sortObjects&&m.sort(i);m=a.__webglObjectsImmediate;d=0;for(f=m.length;d<
|
|
|
|
|
f;d++)if(g=m[d],h=g.object,h.visible)h.matrixAutoUpdate&&h.matrixWorld.flattenToArray(h._objectMatrixArray),J(h,b),h=g.object.material,h.transparent?(g.transparent=h,g.opaque=null):(g.opaque=h,g.transparent=null);a.overrideMaterial?(this.setBlending(a.overrideMaterial.blending),this.setDepthTest(a.overrideMaterial.depthTest),O(a.overrideMaterial.depthWrite),P(a.overrideMaterial.polygonOffset,a.overrideMaterial.polygonOffsetFactor,a.overrideMaterial.polygonOffsetUnits),k(a.__webglObjects,!1,"",b,p,
|
|
|
|
|
r,!0,a.overrideMaterial),j(a.__webglObjectsImmediate,"",b,p,r,!1,a.overrideMaterial)):(this.setBlending(THREE.NormalBlending),k(a.__webglObjects,!0,"opaque",b,p,r,!1),j(a.__webglObjectsImmediate,"opaque",b,p,r,!1),k(a.__webglObjects,!1,"transparent",b,p,r,!0),j(a.__webglObjectsImmediate,"transparent",b,p,r,!0));l(this.renderPluginsPost,a,b);c&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(e.bindTexture(e.TEXTURE_CUBE_MAP,c.__webglTexture),
|
|
|
|
|
e.generateMipmap(e.TEXTURE_CUBE_MAP),e.bindTexture(e.TEXTURE_CUBE_MAP,null)):(e.bindTexture(e.TEXTURE_2D,c.__webglTexture),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)))};this.renderImmediateObject=function(a,b,c,d,f){var g=y(a,b,c,d,f);R=-1;H.setObjectFaces(f);f.immediateRenderCallback?f.immediateRenderCallback(g,e,Ia):f.render(function(a){H.renderBufferImmediate(a,g,d.shading)})};this.initWebGLObjects=function(a){if(!a.__webglObjects)a.__webglObjects=[],a.__webglObjectsImmediate=
|
|
|
|
|
[],a.__webglSprites=[],a.__webglFlares=[];for(;a.__objectsAdded.length;){var i=a.__objectsAdded[0],j=a,k=void 0,l=void 0,F=void 0;if(!i.__webglInit)if(i.__webglInit=!0,i._modelViewMatrix=new THREE.Matrix4,i._normalMatrixArray=new Float32Array(9),i._modelViewMatrixArray=new Float32Array(16),i._objectMatrixArray=new Float32Array(16),i.matrixWorld.flattenToArray(i._objectMatrixArray),i instanceof THREE.Mesh){if(l=i.geometry,l instanceof THREE.Geometry){if(l.geometryGroups===void 0){var F=l,G=void 0,
|
|
|
|
|
v=void 0,y=void 0,C=void 0,t=void 0,D=void 0,n=void 0,q={},J=F.morphTargets.length;F.geometryGroups={};G=0;for(v=F.faces.length;G<v;G++)y=F.faces[G],C=y.materialIndex,D=C!==void 0?C:-1,q[D]===void 0&&(q[D]={hash:D,counter:0}),n=q[D].hash+"_"+q[D].counter,F.geometryGroups[n]===void 0&&(F.geometryGroups[n]={faces3:[],faces4:[],materialIndex:C,vertices:0,numMorphTargets:J}),t=y instanceof THREE.Face3?3:4,F.geometryGroups[n].vertices+t>65535&&(q[D].counter+=1,n=q[D].hash+"_"+q[D].counter,F.geometryGroups[n]===
|
|
|
|
|
void 0&&(F.geometryGroups[n]={faces3:[],faces4:[],materialIndex:C,vertices:0,numMorphTargets:J})),y instanceof THREE.Face3?F.geometryGroups[n].faces3.push(G):F.geometryGroups[n].faces4.push(G),F.geometryGroups[n].vertices+=t;F.geometryGroupsList=[];G=void 0;for(G in F.geometryGroups)F.geometryGroups[G].id=na++,F.geometryGroupsList.push(F.geometryGroups[G])}for(k in l.geometryGroups)if(F=l.geometryGroups[k],!F.__webglVertexBuffer){G=F;G.__webglVertexBuffer=e.createBuffer();G.__webglNormalBuffer=e.createBuffer();
|
|
|
|
|
G.__webglTangentBuffer=e.createBuffer();G.__webglColorBuffer=e.createBuffer();G.__webglUVBuffer=e.createBuffer();G.__webglUV2Buffer=e.createBuffer();G.__webglSkinVertexABuffer=e.createBuffer();G.__webglSkinVertexBBuffer=e.createBuffer();G.__webglSkinIndicesBuffer=e.createBuffer();G.__webglSkinWeightsBuffer=e.createBuffer();G.__webglFaceBuffer=e.createBuffer();G.__webglLineBuffer=e.createBuffer();if(G.numMorphTargets){y=v=void 0;G.__webglMorphTargetsBuffers=[];v=0;for(y=G.numMorphTargets;v<y;v++)G.__webglMorphTargetsBuffers.push(e.createBuffer())}H.info.memory.geometries++;
|
|
|
|
|
C=i;t=C.geometry;v=F.faces3;D=F.faces4;G=v.length*3+D.length*4;y=v.length*1+D.length*2;D=v.length*3+D.length*4;v=d(C,F);n=g(v);q=c(v);J=f(v);F.__vertexArray=new Float32Array(G*3);if(q)F.__normalArray=new Float32Array(G*3);if(t.hasTangents)F.__tangentArray=new Float32Array(G*4);if(J)F.__colorArray=new Float32Array(G*3);if(n){if(t.faceUvs.length>0||t.faceVertexUvs.length>0)F.__uvArray=new Float32Array(G*2);if(t.faceUvs.length>1||t.faceVertexUvs.length>1)F.__uv2Array=new Float32Array(G*2)}if(C.geometry.skinWeights.length&&
|
|
|
|
|
C.geometry.skinIndices.length)F.__skinVertexAArray=new Float32Array(G*4),F.__skinVertexBArray=new Float32Array(G*4),F.__skinIndexArray=new Float32Array(G*4),F.__skinWeightArray=new Float32Array(G*4);F.__faceArray=new Uint16Array(y*3);F.__lineArray=new Uint16Array(D*2);if(F.numMorphTargets){F.__morphTargetsArrays=[];C=0;for(t=F.numMorphTargets;C<t;C++)F.__morphTargetsArrays.push(new Float32Array(G*3))}F.__webglFaceCount=y*3;F.__webglLineCount=D*2;if(v.attributes){if(F.__webglCustomAttributesList===
|
|
|
|
|
void 0)F.__webglCustomAttributesList=[];y=void 0;for(y in v.attributes){var C=v.attributes[y],t={},ka;for(ka in C)t[ka]=C[ka];if(!t.__webglInitialized||t.createUniqueBuffers)t.__webglInitialized=!0,D=1,t.type==="v2"?D=2:t.type==="v3"?D=3:t.type==="v4"?D=4:t.type==="c"&&(D=3),t.size=D,t.array=new Float32Array(G*D),t.buffer=e.createBuffer(),t.buffer.belongsToAttribute=y,C.needsUpdate=!0,t.__original=C;F.__webglCustomAttributesList.push(t)}}F.__inittedArrays=!0;l.__dirtyVertices=!0;l.__dirtyMorphTargets=
|
|
|
|
|
!0;l.__dirtyElements=!0;l.__dirtyUvs=!0;l.__dirtyNormals=!0;l.__dirtyTangents=!0;l.__dirtyColors=!0}}}else if(i instanceof THREE.Ribbon){if(l=i.geometry,!l.__webglVertexBuffer)F=l,F.__webglVertexBuffer=e.createBuffer(),F.__webglColorBuffer=e.createBuffer(),H.info.memory.geometries++,F=l,G=F.vertices.length,F.__vertexArray=new Float32Array(G*3),F.__colorArray=new Float32Array(G*3),F.__webglVertexCount=G,l.__dirtyVertices=!0,l.__dirtyColors=!0}else if(i instanceof THREE.Line){if(l=i.geometry,!l.__webglVertexBuffer)F=
|
|
|
|
|
l,F.__webglVertexBuffer=e.createBuffer(),F.__webglColorBuffer=e.createBuffer(),H.info.memory.geometries++,F=l,G=i,v=F.vertices.length,F.__vertexArray=new Float32Array(v*3),F.__colorArray=new Float32Array(v*3),F.__webglLineCount=v,b(F,G),l.__dirtyVertices=!0,l.__dirtyColors=!0}else if(i instanceof THREE.ParticleSystem&&(l=i.geometry,!l.__webglVertexBuffer))F=l,F.__webglVertexBuffer=e.createBuffer(),F.__webglColorBuffer=e.createBuffer(),H.info.geometries++,F=l,G=i,v=F.vertices.length,F.__vertexArray=
|
|
|
|
|
new Float32Array(v*3),F.__colorArray=new Float32Array(v*3),F.__sortArray=[],F.__webglParticleCount=v,b(F,G),l.__dirtyVertices=!0,l.__dirtyColors=!0;if(!i.__webglActive){if(i instanceof THREE.Mesh)if(l=i.geometry,l instanceof THREE.BufferGeometry)p(j.__webglObjects,l,i);else for(k in l.geometryGroups)F=l.geometryGroups[k],p(j.__webglObjects,F,i);else i instanceof THREE.Ribbon||i instanceof THREE.Line||i instanceof THREE.ParticleSystem?(l=i.geometry,p(j.__webglObjects,l,i)):THREE.MarchingCubes!==void 0&&
|
|
|
|
|
i instanceof THREE.MarchingCubes||i.immediateRenderCallback?j.__webglObjectsImmediate.push({object:i,opaque:null,transparent:null}):i instanceof THREE.Sprite?j.__webglSprites.push(i):i instanceof THREE.LensFlare&&j.__webglFlares.push(i);i.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;)i=a.__objectsRemoved[0],j=a,i instanceof THREE.Mesh||i instanceof THREE.ParticleSystem||i instanceof THREE.Ribbon||i instanceof THREE.Line?m(j.__webglObjects,i):i instanceof THREE.Sprite?
|
|
|
|
|
E(j.__webglSprites,i):i instanceof THREE.LensFlare?E(j.__webglFlares,i):(i instanceof THREE.MarchingCubes||i.immediateRenderCallback)&&m(j.__webglObjectsImmediate,i),i.__webglActive=!1,a.__objectsRemoved.splice(0,1);i=0;for(j=a.__webglObjects.length;i<j;i++)if(ka=a.__webglObjects[i].object,k=ka.geometry,l=y=v=void 0,ka instanceof THREE.Mesh)if(k instanceof THREE.BufferGeometry)k.__dirtyVertices=!1,k.__dirtyElements=!1,k.__dirtyUvs=!1,k.__dirtyNormals=!1,k.__dirtyColors=!1;else{F=0;for(G=k.geometryGroupsList.length;F<
|
|
|
|
|
G;F++)if(v=k.geometryGroupsList[F],l=d(ka,v),y=l.attributes&&r(l),k.__dirtyVertices||k.__dirtyMorphTargets||k.__dirtyElements||k.__dirtyUvs||k.__dirtyNormals||k.__dirtyColors||k.__dirtyTangents||y){var M=ka,y=e.DYNAMIC_DRAW,C=!k.dynamic,n=l;if(v.__inittedArrays){var t=c(n),D=f(n),O=g(n),Q=t===THREE.SmoothShading,I=q=n=void 0,u=void 0,ba=void 0,N=void 0,x=void 0,U=void 0,P=void 0,V=I=void 0,z=void 0,A=void 0,B=void 0,da=u=void 0,ea=void 0,la=void 0,W=u=P=void 0,X=void 0,R=B=A=z=x=void 0,K=u=B=A=z=
|
|
|
|
|
R=B=A=z=R=B=A=z=void 0,L=void 0,T=N=void 0,Z=void 0,$=void 0,ma=void 0,fa=void 0,ja=V=$=L=0,ha=0,ca=K=I=0,S=x=da=0,s=0,ga=void 0,S=v.__vertexArray,Z=v.__uvArray,s=v.__uv2Array,T=v.__normalArray,ba=v.__tangentArray,ea=v.__colorArray,W=v.__skinVertexAArray,X=v.__skinVertexBArray,U=v.__skinIndexArray,ia=v.__skinWeightArray,R=v.__morphTargetsArrays,J=v.__webglCustomAttributesList,o=void 0,o=v.__faceArray,ga=v.__lineArray,la=M.geometry,ra=la.__dirtyElements,ua=la.__dirtyUvs,N=la.__dirtyNormals,P=la.__dirtyTangents,
|
|
|
|
|
xa=la.__dirtyColors,ma=la.__dirtyMorphTargets,fa=la.vertices,M=v.faces3,Y=v.faces4,aa=la.faces,qa=la.faceVertexUvs[0],sa=la.faceVertexUvs[1],oa=la.skinVerticesA,pa=la.skinVerticesB,va=la.skinIndices,ta=la.skinWeights,wa=la.morphTargets;if(la.__dirtyVertices){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=fa[u.a].position,A=fa[u.b].position,B=fa[u.c].position,S[$]=z.x,S[$+1]=z.y,S[$+2]=z.z,S[$+3]=A.x,S[$+4]=A.y,S[$+5]=A.z,S[$+6]=B.x,S[$+7]=B.y,S[$+8]=B.z,$+=9;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=fa[u.a].position,
|
|
|
|
|
A=fa[u.b].position,B=fa[u.c].position,u=fa[u.d].position,S[$]=z.x,S[$+1]=z.y,S[$+2]=z.z,S[$+3]=A.x,S[$+4]=A.y,S[$+5]=A.z,S[$+6]=B.x,S[$+7]=B.y,S[$+8]=B.z,S[$+9]=u.x,S[$+10]=u.y,S[$+11]=u.z,$+=12;e.bindBuffer(e.ARRAY_BUFFER,v.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,S,y)}if(ma){$=0;for(ma=wa.length;$<ma;$++){n=S=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=wa[$].vertices[u.a].position,A=wa[$].vertices[u.b].position,B=wa[$].vertices[u.c].position,fa=R[$],fa[S]=z.x,fa[S+1]=z.y,fa[S+2]=z.z,fa[S+3]=A.x,
|
|
|
|
|
fa[S+4]=A.y,fa[S+5]=A.z,fa[S+6]=B.x,fa[S+7]=B.y,fa[S+8]=B.z,S+=9;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=wa[$].vertices[u.a].position,A=wa[$].vertices[u.b].position,B=wa[$].vertices[u.c].position,u=wa[$].vertices[u.d].position,fa=R[$],fa[S]=z.x,fa[S+1]=z.y,fa[S+2]=z.z,fa[S+3]=A.x,fa[S+4]=A.y,fa[S+5]=A.z,fa[S+6]=B.x,fa[S+7]=B.y,fa[S+8]=B.z,fa[S+9]=u.x,fa[S+10]=u.y,fa[S+11]=u.z,S+=12;e.bindBuffer(e.ARRAY_BUFFER,v.__webglMorphTargetsBuffers[$]);e.bufferData(e.ARRAY_BUFFER,R[$],y)}}if(ta.length){n=0;
|
|
|
|
|
for(q=M.length;n<q;n++)u=aa[M[n]],z=ta[u.a],A=ta[u.b],B=ta[u.c],ia[x]=z.x,ia[x+1]=z.y,ia[x+2]=z.z,ia[x+3]=z.w,ia[x+4]=A.x,ia[x+5]=A.y,ia[x+6]=A.z,ia[x+7]=A.w,ia[x+8]=B.x,ia[x+9]=B.y,ia[x+10]=B.z,ia[x+11]=B.w,z=va[u.a],A=va[u.b],B=va[u.c],U[x]=z.x,U[x+1]=z.y,U[x+2]=z.z,U[x+3]=z.w,U[x+4]=A.x,U[x+5]=A.y,U[x+6]=A.z,U[x+7]=A.w,U[x+8]=B.x,U[x+9]=B.y,U[x+10]=B.z,U[x+11]=B.w,z=oa[u.a],A=oa[u.b],B=oa[u.c],W[x]=z.x,W[x+1]=z.y,W[x+2]=z.z,W[x+3]=1,W[x+4]=A.x,W[x+5]=A.y,W[x+6]=A.z,W[x+7]=1,W[x+8]=B.x,W[x+9]=B.y,
|
|
|
|
|
W[x+10]=B.z,W[x+11]=1,z=pa[u.a],A=pa[u.b],B=pa[u.c],X[x]=z.x,X[x+1]=z.y,X[x+2]=z.z,X[x+3]=1,X[x+4]=A.x,X[x+5]=A.y,X[x+6]=A.z,X[x+7]=1,X[x+8]=B.x,X[x+9]=B.y,X[x+10]=B.z,X[x+11]=1,x+=12;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=ta[u.a],A=ta[u.b],B=ta[u.c],R=ta[u.d],ia[x]=z.x,ia[x+1]=z.y,ia[x+2]=z.z,ia[x+3]=z.w,ia[x+4]=A.x,ia[x+5]=A.y,ia[x+6]=A.z,ia[x+7]=A.w,ia[x+8]=B.x,ia[x+9]=B.y,ia[x+10]=B.z,ia[x+11]=B.w,ia[x+12]=R.x,ia[x+13]=R.y,ia[x+14]=R.z,ia[x+15]=R.w,z=va[u.a],A=va[u.b],B=va[u.c],R=va[u.d],U[x]=
|
|
|
|
|
z.x,U[x+1]=z.y,U[x+2]=z.z,U[x+3]=z.w,U[x+4]=A.x,U[x+5]=A.y,U[x+6]=A.z,U[x+7]=A.w,U[x+8]=B.x,U[x+9]=B.y,U[x+10]=B.z,U[x+11]=B.w,U[x+12]=R.x,U[x+13]=R.y,U[x+14]=R.z,U[x+15]=R.w,z=oa[u.a],A=oa[u.b],B=oa[u.c],R=oa[u.d],W[x]=z.x,W[x+1]=z.y,W[x+2]=z.z,W[x+3]=1,W[x+4]=A.x,W[x+5]=A.y,W[x+6]=A.z,W[x+7]=1,W[x+8]=B.x,W[x+9]=B.y,W[x+10]=B.z,W[x+11]=1,W[x+12]=R.x,W[x+13]=R.y,W[x+14]=R.z,W[x+15]=1,z=pa[u.a],A=pa[u.b],B=pa[u.c],u=pa[u.d],X[x]=z.x,X[x+1]=z.y,X[x+2]=z.z,X[x+3]=1,X[x+4]=A.x,X[x+5]=A.y,X[x+6]=A.z,X[x+
|
|
|
|
|
7]=1,X[x+8]=B.x,X[x+9]=B.y,X[x+10]=B.z,X[x+11]=1,X[x+12]=u.x,X[x+13]=u.y,X[x+14]=u.z,X[x+15]=1,x+=16;x>0&&(e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinVertexABuffer),e.bufferData(e.ARRAY_BUFFER,W,y),e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinVertexBBuffer),e.bufferData(e.ARRAY_BUFFER,X,y),e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinIndicesBuffer),e.bufferData(e.ARRAY_BUFFER,U,y),e.bindBuffer(e.ARRAY_BUFFER,v.__webglSkinWeightsBuffer),e.bufferData(e.ARRAY_BUFFER,ia,y))}if(xa&&D){n=0;for(q=M.length;n<q;n++)u=
|
|
|
|
|
aa[M[n]],x=u.vertexColors,U=u.color,x.length===3&&D===THREE.VertexColors?(u=x[0],W=x[1],X=x[2]):X=W=u=U,ea[da]=u.r,ea[da+1]=u.g,ea[da+2]=u.b,ea[da+3]=W.r,ea[da+4]=W.g,ea[da+5]=W.b,ea[da+6]=X.r,ea[da+7]=X.g,ea[da+8]=X.b,da+=9;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],x=u.vertexColors,U=u.color,x.length===4&&D===THREE.VertexColors?(u=x[0],W=x[1],X=x[2],x=x[3]):x=X=W=u=U,ea[da]=u.r,ea[da+1]=u.g,ea[da+2]=u.b,ea[da+3]=W.r,ea[da+4]=W.g,ea[da+5]=W.b,ea[da+6]=X.r,ea[da+7]=X.g,ea[da+8]=X.b,ea[da+9]=x.r,ea[da+
|
|
|
|
|
10]=x.g,ea[da+11]=x.b,da+=12;da>0&&(e.bindBuffer(e.ARRAY_BUFFER,v.__webglColorBuffer),e.bufferData(e.ARRAY_BUFFER,ea,y))}if(P&&la.hasTangents){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],P=u.vertexTangents,da=P[0],ea=P[1],la=P[2],ba[K]=da.x,ba[K+1]=da.y,ba[K+2]=da.z,ba[K+3]=da.w,ba[K+4]=ea.x,ba[K+5]=ea.y,ba[K+6]=ea.z,ba[K+7]=ea.w,ba[K+8]=la.x,ba[K+9]=la.y,ba[K+10]=la.z,ba[K+11]=la.w,K+=12;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],P=u.vertexTangents,da=P[0],ea=P[1],la=P[2],P=P[3],ba[K]=da.x,ba[K+1]=da.y,ba[K+
|
|
|
|
|
2]=da.z,ba[K+3]=da.w,ba[K+4]=ea.x,ba[K+5]=ea.y,ba[K+6]=ea.z,ba[K+7]=ea.w,ba[K+8]=la.x,ba[K+9]=la.y,ba[K+10]=la.z,ba[K+11]=la.w,ba[K+12]=P.x,ba[K+13]=P.y,ba[K+14]=P.z,ba[K+15]=P.w,K+=16;e.bindBuffer(e.ARRAY_BUFFER,v.__webglTangentBuffer);e.bufferData(e.ARRAY_BUFFER,ba,y)}if(N&&t){n=0;for(q=M.length;n<q;n++)if(u=aa[M[n]],ba=u.vertexNormals,N=u.normal,ba.length===3&&Q)for(K=0;K<3;K++)N=ba[K],T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;else for(K=0;K<3;K++)T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;n=0;for(q=Y.length;n<
|
|
|
|
|
q;n++)if(u=aa[Y[n]],ba=u.vertexNormals,N=u.normal,ba.length===4&&Q)for(K=0;K<4;K++)N=ba[K],T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;else for(K=0;K<4;K++)T[I]=N.x,T[I+1]=N.y,T[I+2]=N.z,I+=3;e.bindBuffer(e.ARRAY_BUFFER,v.__webglNormalBuffer);e.bufferData(e.ARRAY_BUFFER,T,y)}if(ua&&qa&&O){n=0;for(q=M.length;n<q;n++)if(I=M[n],I=qa[I],I!==void 0)for(K=0;K<3;K++)T=I[K],Z[V]=T.u,Z[V+1]=T.v,V+=2;n=0;for(q=Y.length;n<q;n++)if(I=Y[n],I=qa[I],I!==void 0)for(K=0;K<4;K++)T=I[K],Z[V]=T.u,Z[V+1]=T.v,V+=2;V>0&&(e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
|
|
v.__webglUVBuffer),e.bufferData(e.ARRAY_BUFFER,Z,y))}if(ua&&sa&&O){n=0;for(q=M.length;n<q;n++)if(I=M[n],V=sa[I],V!==void 0)for(K=0;K<3;K++)Z=V[K],s[ja]=Z.u,s[ja+1]=Z.v,ja+=2;n=0;for(q=Y.length;n<q;n++)if(I=Y[n],V=sa[I],V!==void 0)for(K=0;K<4;K++)Z=V[K],s[ja]=Z.u,s[ja+1]=Z.v,ja+=2;ja>0&&(e.bindBuffer(e.ARRAY_BUFFER,v.__webglUV2Buffer),e.bufferData(e.ARRAY_BUFFER,s,y))}if(ra){n=0;for(q=M.length;n<q;n++)o[ha]=L,o[ha+1]=L+1,o[ha+2]=L+2,ha+=3,ga[ca]=L,ga[ca+1]=L+1,ga[ca+2]=L,ga[ca+3]=L+2,ga[ca+4]=L+1,
|
|
|
|
|
ga[ca+5]=L+2,ca+=6,L+=3;n=0;for(q=Y.length;n<q;n++)o[ha]=L,o[ha+1]=L+1,o[ha+2]=L+3,o[ha+3]=L+1,o[ha+4]=L+2,o[ha+5]=L+3,ha+=6,ga[ca]=L,ga[ca+1]=L+1,ga[ca+2]=L,ga[ca+3]=L+3,ga[ca+4]=L+1,ga[ca+5]=L+2,ga[ca+6]=L+2,ga[ca+7]=L+3,ca+=8,L+=4;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,v.__webglFaceBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,o,y);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,v.__webglLineBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,ga,y)}if(J){K=0;for(L=J.length;K<L;K++)if(o=J[K],o.__original.needsUpdate){s=
|
|
|
|
|
0;if(o.size===1)if(o.boundTo===void 0||o.boundTo==="vertices"){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],o.array[s]=o.value[u.a],o.array[s+1]=o.value[u.b],o.array[s+2]=o.value[u.c],s+=3;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],o.array[s]=o.value[u.a],o.array[s+1]=o.value[u.b],o.array[s+2]=o.value[u.c],o.array[s+3]=o.value[u.d],s+=4}else{if(o.boundTo==="faces"){n=0;for(q=M.length;n<q;n++)ga=o.value[M[n]],o.array[s]=ga,o.array[s+1]=ga,o.array[s+2]=ga,s+=3;n=0;for(q=Y.length;n<q;n++)ga=o.value[Y[n]],o.array[s]=
|
|
|
|
|
ga,o.array[s+1]=ga,o.array[s+2]=ga,o.array[s+3]=ga,s+=4}}else if(o.size===2)if(o.boundTo===void 0||o.boundTo==="vertices"){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+5]=B.y,s+=6;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],u=o.value[u.d],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+
|
|
|
|
|
5]=B.y,o.array[s+6]=u.x,o.array[s+7]=u.y,s+=8}else{if(o.boundTo==="faces"){n=0;for(q=M.length;n<q;n++)B=A=z=ga=o.value[M[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+5]=B.y,s+=6;n=0;for(q=Y.length;n<q;n++)u=B=A=z=ga=o.value[Y[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=A.x,o.array[s+3]=A.y,o.array[s+4]=B.x,o.array[s+5]=B.y,o.array[s+6]=u.x,o.array[s+7]=u.y,s+=8}}else if(o.size===3)if(t=o.type==="c"?["r","g","b"]:["x","y","z"],o.boundTo===void 0||
|
|
|
|
|
o.boundTo==="vertices"){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],s+=9;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],u=o.value[u.d],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+
|
|
|
|
|
5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],o.array[s+9]=u[t[0]],o.array[s+10]=u[t[1]],o.array[s+11]=u[t[2]],s+=12}else{if(o.boundTo==="faces"){n=0;for(q=M.length;n<q;n++)B=A=z=ga=o.value[M[n]],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],s+=9;n=0;for(q=Y.length;n<q;n++)u=B=A=z=ga=o.value[Y[n]],o.array[s]=z[t[0]],o.array[s+1]=z[t[1]],
|
|
|
|
|
o.array[s+2]=z[t[2]],o.array[s+3]=A[t[0]],o.array[s+4]=A[t[1]],o.array[s+5]=A[t[2]],o.array[s+6]=B[t[0]],o.array[s+7]=B[t[1]],o.array[s+8]=B[t[2]],o.array[s+9]=u[t[0]],o.array[s+10]=u[t[1]],o.array[s+11]=u[t[2]],s+=12}}else if(o.size===4)if(o.boundTo===void 0||o.boundTo==="vertices"){n=0;for(q=M.length;n<q;n++)u=aa[M[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,
|
|
|
|
|
o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,s+=12;n=0;for(q=Y.length;n<q;n++)u=aa[Y[n]],z=o.value[u.a],A=o.value[u.b],B=o.value[u.c],u=o.value[u.d],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,o.array[s+12]=u.x,o.array[s+13]=u.y,o.array[s+14]=u.z,o.array[s+15]=u.w,s+=16}else if(o.boundTo==="faces"){n=0;for(q=M.length;n<
|
|
|
|
|
q;n++)B=A=z=ga=o.value[M[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,s+=12;n=0;for(q=Y.length;n<q;n++)u=B=A=z=ga=o.value[Y[n]],o.array[s]=z.x,o.array[s+1]=z.y,o.array[s+2]=z.z,o.array[s+3]=z.w,o.array[s+4]=A.x,o.array[s+5]=A.y,o.array[s+6]=A.z,o.array[s+7]=A.w,o.array[s+8]=B.x,o.array[s+9]=B.y,o.array[s+10]=B.z,o.array[s+11]=B.w,o.array[s+
|
|
|
|
|
12]=u.x,o.array[s+13]=u.y,o.array[s+14]=u.z,o.array[s+15]=u.w,s+=16}e.bindBuffer(e.ARRAY_BUFFER,o.buffer);e.bufferData(e.ARRAY_BUFFER,o.array,y)}}C&&(delete v.__inittedArrays,delete v.__colorArray,delete v.__normalArray,delete v.__tangentArray,delete v.__uvArray,delete v.__uv2Array,delete v.__faceArray,delete v.__vertexArray,delete v.__lineArray,delete v.__skinVertexAArray,delete v.__skinVertexBArray,delete v.__skinIndexArray,delete v.__skinWeightArray)}}k.__dirtyVertices=!1;k.__dirtyMorphTargets=
|
|
|
|
|
!1;k.__dirtyElements=!1;k.__dirtyUvs=!1;k.__dirtyNormals=!1;k.__dirtyColors=!1;k.__dirtyTangents=!1;l.attributes&&w(l)}else if(ka instanceof THREE.Ribbon){if(k.__dirtyVertices||k.__dirtyColors){l=k;ka=e.DYNAMIC_DRAW;t=F=t=C=C=void 0;D=l.vertices;G=l.colors;n=D.length;v=G.length;q=l.__vertexArray;y=l.__colorArray;J=l.__dirtyColors;if(l.__dirtyVertices){for(C=0;C<n;C++)t=D[C].position,F=C*3,q[F]=t.x,q[F+1]=t.y,q[F+2]=t.z;e.bindBuffer(e.ARRAY_BUFFER,l.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,
|
|
|
|
|
q,ka)}if(J){for(C=0;C<v;C++)t=G[C],F=C*3,y[F]=t.r,y[F+1]=t.g,y[F+2]=t.b;e.bindBuffer(e.ARRAY_BUFFER,l.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,y,ka)}}k.__dirtyVertices=!1;k.__dirtyColors=!1}else if(ka instanceof THREE.Line){l=d(ka,v);y=l.attributes&&r(l);if(k.__dirtyVertices||k.__dirtyColors||y){ka=k;F=e.DYNAMIC_DRAW;n=G=Q=D=O=void 0;D=ka.vertices;v=ka.colors;n=D.length;y=v.length;q=ka.__vertexArray;C=ka.__colorArray;J=ka.__dirtyColors;t=ka.__webglCustomAttributesList;L=aa=Y=M=Q=O=void 0;if(ka.__dirtyVertices){for(O=
|
|
|
|
|
0;O<n;O++)Q=D[O].position,G=O*3,q[G]=Q.x,q[G+1]=Q.y,q[G+2]=Q.z;e.bindBuffer(e.ARRAY_BUFFER,ka.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,q,F)}if(J){for(D=0;D<y;D++)n=v[D],G=D*3,C[G]=n.r,C[G+1]=n.g,C[G+2]=n.b;e.bindBuffer(e.ARRAY_BUFFER,ka.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,C,F)}if(t){O=0;for(Q=t.length;O<Q;O++)if(L=t[O],L.needsUpdate&&(L.boundTo===void 0||L.boundTo==="vertices")){G=0;Y=L.value.length;if(L.size===1)for(M=0;M<Y;M++)L.array[M]=L.value[M];else if(L.size===2)for(M=0;M<
|
|
|
|
|
Y;M++)aa=L.value[M],L.array[G]=aa.x,L.array[G+1]=aa.y,G+=2;else if(L.size===3)if(L.type==="c")for(M=0;M<Y;M++)aa=L.value[M],L.array[G]=aa.r,L.array[G+1]=aa.g,L.array[G+2]=aa.b,G+=3;else for(M=0;M<Y;M++)aa=L.value[M],L.array[G]=aa.x,L.array[G+1]=aa.y,L.array[G+2]=aa.z,G+=3;else if(L.size===4)for(M=0;M<Y;M++)aa=L.value[M],L.array[G]=aa.x,L.array[G+1]=aa.y,L.array[G+2]=aa.z,L.array[G+3]=aa.w,G+=4;e.bindBuffer(e.ARRAY_BUFFER,L.buffer);e.bufferData(e.ARRAY_BUFFER,L.array,F)}}}k.__dirtyVertices=!1;k.__dirtyColors=
|
|
|
|
|
!1;l.attributes&&w(l)}else if(ka instanceof THREE.ParticleSystem)l=d(ka,v),y=l.attributes&&r(l),(k.__dirtyVertices||k.__dirtyColors||ka.sortParticles||y)&&h(k,e.DYNAMIC_DRAW,ka),k.__dirtyVertices=!1,k.__dirtyColors=!1,l.attributes&&w(l)};this.initMaterial=function(a,b,c,d){var f,g,h,i;a instanceof THREE.MeshDepthMaterial?i="depth":a instanceof THREE.MeshNormalMaterial?i="normal":a instanceof THREE.MeshBasicMaterial?i="basic":a instanceof THREE.MeshLambertMaterial?i="lambert":a instanceof THREE.MeshPhongMaterial?
|
|
|
|
|
i="phong":a instanceof THREE.LineBasicMaterial?i="basic":a instanceof THREE.ParticleBasicMaterial&&(i="particle_basic");if(i){var j=THREE.ShaderLib[i];a.uniforms=THREE.UniformsUtils.clone(j.uniforms);a.vertexShader=j.vertexShader;a.fragmentShader=j.fragmentShader}var k,l,m;k=m=j=0;for(l=b.length;k<l;k++)h=b[k],h instanceof THREE.SpotLight&&m++,h instanceof THREE.DirectionalLight&&m++,h instanceof THREE.PointLight&&j++;j+m<=va?k=m:(k=Math.ceil(va*m/(j+m)),j=va-k);h={directional:k,point:j};j=m=0;for(k=
|
|
|
|
|
b.length;j<k;j++)l=b[j],l instanceof THREE.SpotLight&&l.castShadow&&m++;var n=50;if(d!==void 0&&d instanceof THREE.SkinnedMesh)n=d.bones.length;var q;a:{k=a.fragmentShader;l=a.vertexShader;var j=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,morphTargets:a.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:h.directional,maxPointLights:h.point,maxBones:n,
|
|
|
|
|
shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapWidth:this.shadowMapWidth,shadowMapHeight:this.shadowMapHeight,maxShadows:m,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround},p,d=[];i?d.push(i):(d.push(k),d.push(l));for(p in c)d.push(p),d.push(c[p]);i=d.join();p=0;for(d=ya.length;p<d;p++)if(ya[p].code===i){q=ya[p].program;break a}p=e.createProgram();d=[Ma?"#define VERTEX_TEXTURES":"",H.gammaInput?"#define GAMMA_INPUT":
|
|
|
|
|
"",H.gammaOutput?"#define GAMMA_OUTPUT":"",H.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.perPixel?"#define PHONG_PER_PIXEL":
|
|
|
|
|
"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
|
|
h=["precision "+ua+" float;","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",H.gammaInput?"#define GAMMA_INPUT":"",H.gammaOutput?"#define GAMMA_OUTPUT":"",H.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?
|
|
|
|
|
"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapSoft?"#define SHADOWMAP_WIDTH "+c.shadowMapWidth.toFixed(1):"",c.shadowMapSoft?"#define SHADOWMAP_HEIGHT "+c.shadowMapHeight.toFixed(1):"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");e.attachShader(p,V("fragment",h+k));e.attachShader(p,V("vertex",
|
|
|
|
|
d+l));e.linkProgram(p);e.getProgramParameter(p,e.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+e.getProgramParameter(p,e.VALIDATE_STATUS)+", gl error ["+e.getError()+"]");p.uniforms={};p.attributes={};var r,d=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(r in j)d.push(r);r=d;d=0;for(j=r.length;d<j;d++)k=r[d],p.uniforms[k]=e.getUniformLocation(p,
|
|
|
|
|
k);d=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(r=0;r<c.maxMorphTargets;r++)d.push("morphTarget"+r);for(q in b)d.push(q);q=d;r=0;for(b=q.length;r<b;r++)c=q[r],p.attributes[c]=e.getAttribLocation(p,c);p.id=ya.length;ya.push({program:p,code:i});H.info.memory.programs=ya.length;q=p}a.program=q;q=a.program.attributes;q.position>=0&&e.enableVertexAttribArray(q.position);q.color>=0&&e.enableVertexAttribArray(q.color);q.normal>=0&&e.enableVertexAttribArray(q.normal);
|
|
|
|
|
q.tangent>=0&&e.enableVertexAttribArray(q.tangent);a.skinning&&q.skinVertexA>=0&&q.skinVertexB>=0&&q.skinIndex>=0&&q.skinWeight>=0&&(e.enableVertexAttribArray(q.skinVertexA),e.enableVertexAttribArray(q.skinVertexB),e.enableVertexAttribArray(q.skinIndex),e.enableVertexAttribArray(q.skinWeight));if(a.attributes)for(g in a.attributes)q[g]!==void 0&&q[g]>=0&&e.enableVertexAttribArray(q[g]);if(a.morphTargets)for(g=a.numSupportedMorphTargets=0;g<this.maxMorphTargets;g++)r="morphTarget"+g,q[r]>=0&&(e.enableVertexAttribArray(q[r]),
|
|
|
|
|
a.numSupportedMorphTargets++);a.uniformsList=[];for(f in a.uniforms)a.uniformsList.push([a.uniforms[f],f])};this.setFaceCulling=function(a,b){a?(!b||b==="ccw"?e.frontFace(e.CCW):e.frontFace(e.CW),a==="back"?e.cullFace(e.BACK):a==="front"?e.cullFace(e.FRONT):e.cullFace(e.FRONT_AND_BACK),e.enable(e.CULL_FACE)):e.disable(e.CULL_FACE)};this.setObjectFaces=function(a){if(ra!==a.doubleSided)a.doubleSided?e.disable(e.CULL_FACE):e.enable(e.CULL_FACE),ra=a.doubleSided;if(Z!==a.flipSided)a.flipSided?e.frontFace(e.CW):
|
|
|
|
|
e.frontFace(e.CCW),Z=a.flipSided};this.setDepthTest=function(a){oa!==a&&(a?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),oa=a)};this.setBlending=function(a){if(a!==sa){switch(a){case THREE.AdditiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE);break;case THREE.SubtractiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.SRC_COLOR);break;default:e.blendEquationSeparate(e.FUNC_ADD,
|
|
|
|
|
e.FUNC_ADD),e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}sa=a}};this.setTexture=function(a,b){if(a.needsUpdate){if(!a.__webglInit)a.__webglInit=!0,a.__webglTexture=e.createTexture(),H.info.memory.textures++;e.activeTexture(e.TEXTURE0+b);e.bindTexture(e.TEXTURE_2D,a.__webglTexture);var c=C(e.TEXTURE_2D,a,a.image),d=Q(a.format),f=Q(a.type);a instanceof THREE.DataTexture?e.texImage2D(e.TEXTURE_2D,0,d,a.image.width,a.image.height,0,d,f,a.image.data):e.texImage2D(e.TEXTURE_2D,
|
|
|
|
|
0,d,d,f,a.image);c&&e.generateMipmap(e.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdated)a.onUpdated()}else e.activeTexture(e.TEXTURE0+b),e.bindTexture(e.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(a.depthBuffer===void 0)a.depthBuffer=!0;if(a.stencilBuffer===void 0)a.stencilBuffer=!0;a.__webglTexture=e.createTexture();var c=Q(a.format),d=Q(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];e.bindTexture(e.TEXTURE_CUBE_MAP,
|
|
|
|
|
a.__webglTexture);C(e.TEXTURE_CUBE_MAP,a,a);for(var f=0;f<6;f++){a.__webglFramebuffer[f]=e.createFramebuffer();a.__webglRenderbuffer[f]=e.createRenderbuffer();e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,c,a.width,a.height,0,c,d,null);var g=a,h=e.TEXTURE_CUBE_MAP_POSITIVE_X+f;e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer[f]);e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,h,g.__webglTexture,0);D(a.__webglRenderbuffer[f],a)}}else a.__webglFramebuffer=e.createFramebuffer(),a.__webglRenderbuffer=
|
|
|
|
|
e.createRenderbuffer(),e.bindTexture(e.TEXTURE_2D,a.__webglTexture),C(e.TEXTURE_2D,a,a),e.texImage2D(e.TEXTURE_2D,0,c,a.width,a.height,0,c,d,null),c=e.TEXTURE_2D,e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,c,a.__webglTexture,0),D(a.__webglRenderbuffer,a);b?e.bindTexture(e.TEXTURE_CUBE_MAP,null):e.bindTexture(e.TEXTURE_2D,null);e.bindRenderbuffer(e.RENDERBUFFER,null);e.bindFramebuffer(e.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:
|
|
|
|
|
a.__webglFramebuffer,c=a.width,a=a.height,f=d=0):(b=null,c=Ga,a=Ha,d=Ea,f=Fa);b!==qa&&(e.bindFramebuffer(e.FRAMEBUFFER,b),e.viewport(d,f,c,a),qa=b);Ja=c;Ka=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
|
|
|
|
|
"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapSoft?"#define SHADOWMAP_WIDTH "+c.shadowMapWidth.toFixed(1):"",c.shadowMapSoft?"#define SHADOWMAP_HEIGHT "+c.shadowMapHeight.toFixed(1):"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");e.attachShader(p,V("fragment",
|
|
|
|
|
h+k));e.attachShader(p,V("vertex",d+l));e.linkProgram(p);e.getProgramParameter(p,e.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+e.getProgramParameter(p,e.VALIDATE_STATUS)+", gl error ["+e.getError()+"]");p.uniforms={};p.attributes={};var r,d=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(r in j)d.push(r);r=d;d=0;for(j=r.length;d<j;d++)k=r[d],p.uniforms[k]=
|
|
|
|
|
e.getUniformLocation(p,k);d=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(r=0;r<c.maxMorphTargets;r++)d.push("morphTarget"+r);for(q in b)d.push(q);q=d;r=0;for(b=q.length;r<b;r++)c=q[r],p.attributes[c]=e.getAttribLocation(p,c);p.id=ya.length;ya.push({program:p,code:i});H.info.memory.programs=ya.length;q=p}a.program=q;q=a.program.attributes;q.position>=0&&e.enableVertexAttribArray(q.position);q.color>=0&&e.enableVertexAttribArray(q.color);
|
|
|
|
|
q.normal>=0&&e.enableVertexAttribArray(q.normal);q.tangent>=0&&e.enableVertexAttribArray(q.tangent);a.skinning&&q.skinVertexA>=0&&q.skinVertexB>=0&&q.skinIndex>=0&&q.skinWeight>=0&&(e.enableVertexAttribArray(q.skinVertexA),e.enableVertexAttribArray(q.skinVertexB),e.enableVertexAttribArray(q.skinIndex),e.enableVertexAttribArray(q.skinWeight));if(a.attributes)for(g in a.attributes)q[g]!==void 0&&q[g]>=0&&e.enableVertexAttribArray(q[g]);if(a.morphTargets)for(g=a.numSupportedMorphTargets=0;g<this.maxMorphTargets;g++)r=
|
|
|
|
|
"morphTarget"+g,q[r]>=0&&(e.enableVertexAttribArray(q[r]),a.numSupportedMorphTargets++);a.uniformsList=[];for(f in a.uniforms)a.uniformsList.push([a.uniforms[f],f])};this.setFaceCulling=function(a,b){a?(!b||b==="ccw"?e.frontFace(e.CCW):e.frontFace(e.CW),a==="back"?e.cullFace(e.BACK):a==="front"?e.cullFace(e.FRONT):e.cullFace(e.FRONT_AND_BACK),e.enable(e.CULL_FACE)):e.disable(e.CULL_FACE)};this.setObjectFaces=function(a){if(ra!==a.doubleSided)a.doubleSided?e.disable(e.CULL_FACE):e.enable(e.CULL_FACE),
|
|
|
|
|
ra=a.doubleSided;if(Z!==a.flipSided)a.flipSided?e.frontFace(e.CW):e.frontFace(e.CCW),Z=a.flipSided};this.setDepthTest=function(a){oa!==a&&(a?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),oa=a)};this.setBlending=function(a){if(a!==sa){switch(a){case THREE.AdditiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE);break;case THREE.SubtractiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:e.blendEquation(e.FUNC_ADD);
|
|
|
|
|
e.blendFunc(e.ZERO,e.SRC_COLOR);break;default:e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD),e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}sa=a}};this.setTexture=function(a,b){if(a.needsUpdate){if(!a.__webglInit)a.__webglInit=!0,a.__webglTexture=e.createTexture(),H.info.memory.textures++;e.activeTexture(e.TEXTURE0+b);e.bindTexture(e.TEXTURE_2D,a.__webglTexture);var c=C(e.TEXTURE_2D,a,a.image),d=Q(a.format),f=Q(a.type);a instanceof THREE.DataTexture?e.texImage2D(e.TEXTURE_2D,
|
|
|
|
|
0,d,a.image.width,a.image.height,0,d,f,a.image.data):e.texImage2D(e.TEXTURE_2D,0,d,d,f,a.image);c&&e.generateMipmap(e.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdated)a.onUpdated()}else e.activeTexture(e.TEXTURE0+b),e.bindTexture(e.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(a.depthBuffer===void 0)a.depthBuffer=!0;if(a.stencilBuffer===void 0)a.stencilBuffer=!0;a.__webglTexture=e.createTexture();var c=Q(a.format),
|
|
|
|
|
d=Q(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];e.bindTexture(e.TEXTURE_CUBE_MAP,a.__webglTexture);C(e.TEXTURE_CUBE_MAP,a,a);for(var f=0;f<6;f++){a.__webglFramebuffer[f]=e.createFramebuffer();a.__webglRenderbuffer[f]=e.createRenderbuffer();e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,c,a.width,a.height,0,c,d,null);var g=a,h=e.TEXTURE_CUBE_MAP_POSITIVE_X+f;e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer[f]);e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,h,g.__webglTexture,
|
|
|
|
|
0);D(a.__webglRenderbuffer[f],a)}}else a.__webglFramebuffer=e.createFramebuffer(),a.__webglRenderbuffer=e.createRenderbuffer(),e.bindTexture(e.TEXTURE_2D,a.__webglTexture),C(e.TEXTURE_2D,a,a),e.texImage2D(e.TEXTURE_2D,0,c,a.width,a.height,0,c,d,null),c=e.TEXTURE_2D,e.bindFramebuffer(e.FRAMEBUFFER,a.__webglFramebuffer),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,c,a.__webglTexture,0),D(a.__webglRenderbuffer,a);b?e.bindTexture(e.TEXTURE_CUBE_MAP,null):e.bindTexture(e.TEXTURE_2D,null);e.bindRenderbuffer(e.RENDERBUFFER,
|
|
|
|
|
null);e.bindFramebuffer(e.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,f=d=0):(b=null,c=Ga,a=Ha,d=Ea,f=Fa);b!==qa&&(e.bindFramebuffer(e.FRAMEBUFFER,b),e.viewport(d,f,c,a),qa=b);Ja=c;Ka=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
|
|
|
|
|
THREE.WebGLRenderTarget=function(a,b,d){this.width=a;this.height=b;d=d||{};this.wrapS=d.wrapS!==void 0?d.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=d.wrapT!==void 0?d.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=d.magFilter!==void 0?d.magFilter:THREE.LinearFilter;this.minFilter=d.minFilter!==void 0?d.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=d.format!==void 0?d.format:THREE.RGBAFormat;this.type=d.type!==void 0?d.type:
|
|
|
|
|
THREE.UnsignedByteType;this.depthBuffer=d.depthBuffer!==void 0?d.depthBuffer:!0;this.stencilBuffer=d.stencilBuffer!==void 0?d.stencilBuffer:!0};
|
|
|
|
|
THREE.WebGLRenderTarget.prototype.clone=function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;return a};THREE.WebGLRenderTargetCube=function(a,b,d){THREE.WebGLRenderTarget.call(this,a,b,d);this.activeCubeFace=0};
|
|
|
|
|