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

Merge pull request #6263 from bhouston/ambientOcclusionMap

Modification of LightMap and addition of AOMap to Materials.
......@@ -278,6 +278,32 @@ Sidebar.Material = function ( editor ) {
container.add( materialEnvMapRow );
// light map
var materialLightMapRow = new UI.Panel();
var materialLightMapEnabled = new UI.Checkbox( false ).onChange( update );
var materialLightMap = new UI.Texture().onChange( update );
materialLightMapRow.add( new UI.Text( 'Light Map' ).setWidth( '90px' ) );
materialLightMapRow.add( materialLightMapEnabled );
materialLightMapRow.add( materialLightMap );
container.add( materialLightMapRow );
// ambient occlusion map
var materialAOMapRow = new UI.Panel();
var materialAOMapEnabled = new UI.Checkbox( false ).onChange( update );
var materialAOMap = new UI.Texture().onChange( update );
var materialAOScale = new UI.Number( 1 ).setRange( 0, 1 ).setWidth( '30px' ).onChange( update );
materialAOMapRow.add( new UI.Text( 'AO Map' ).setWidth( '90px' ) );
materialAOMapRow.add( materialAOMapEnabled );
materialAOMapRow.add( materialAOMap );
materialAOMapRow.add( materialAOScale );
container.add( materialAOMapRow );
// side
var materialSideRow = new UI.Panel();
......@@ -574,6 +600,41 @@ Sidebar.Material = function ( editor ) {
}
if ( material.lightMap !== undefined ) {
var lightMapEnabled = materialLightMapEnabled.getValue() === true;
if ( objectHasUvs ) {
material.lightMap = specularMapEnabled ? materialLightMap.getValue() : null;
material.needsUpdate = true;
} else {
if ( lightMapEnabled ) textureWarning = true;
}
}
if ( material.aoMap !== undefined ) {
var aoMapEnabled = materialAOMapEnabled.getValue() === true;
if ( objectHasUvs ) {
material.aoMap = aoMapEnabled ? materialAOMap.getValue() : null;
material.aoMapIntensity = materialAOScale.getValue();
material.needsUpdate = true;
} else {
if ( aoMapEnabled ) textureWarning = true;
}
}
if ( material.side !== undefined ) {
material.side = parseInt( materialSide.getValue() );
......@@ -650,6 +711,8 @@ Sidebar.Material = function ( editor ) {
'normalMap': materialNormalMapRow,
'specularMap': materialSpecularMapRow,
'envMap': materialEnvMapRow,
'lightMap': materialLightMapRow,
'aoMap': materialAOMapRow,
'side': materialSideRow,
'shading': materialShadingRow,
'blending': materialBlendingRow,
......@@ -799,6 +862,21 @@ Sidebar.Material = function ( editor ) {
}
if ( material.aoMap !== undefined ) {
materialAOMapEnabled.setValue( material.aoMap !== null );
materialAOMap.setValue( material.aoMap );
materialAOScale.setValue( material.aoMapIntensity );
}
if ( material.lightMap !== undefined ) {
materialLightMapEnabled.setValue( material.lightMap !== null );
materialLightMap.setValue( material.lightMap );
}
if ( material.side !== undefined ) {
materialSide.setValue( material.side );
......
......@@ -100,12 +100,7 @@
// LIGHTS
var directionalLight = new THREE.DirectionalLight( 0x333333, 2 );
directionalLight.position.set( 100, 100, -100 );
scene.add( directionalLight );
var hemiLight = new THREE.HemisphereLight( 0xaabbff, 0x040404, 1 );
var hemiLight = new THREE.HemisphereLight( 0xaabbff, 0x040404, 0.3 );
hemiLight.position.y = 500;
scene.add( hemiLight );
......@@ -157,7 +152,12 @@
var loader = new THREE.JSONLoader();
loader.load( "obj/lightmap/lightmap.js", function ( geometry, materials ) {
for( var i = 0; i < materials.length; i ++ ) {
materials[i].lightMapIntensity = 0.75;
}
var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
mesh.scale.multiplyScalar( 100 );
scene.add( mesh );
......
......@@ -347,6 +347,12 @@ THREE.Loader.prototype = {
}
if ( m.mapAO && texturePath ) {
create_texture( mpars, 'aoMap', m.mapAO, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );
}
if ( m.mapBump && texturePath ) {
create_texture( mpars, 'bumpMap', m.mapBump, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );
......
......@@ -247,7 +247,7 @@ THREE.ObjectLoader.prototype = {
if ( data.bumpMap !== undefined ) {
material.bumpMap = getTexture( data.bumpMap );
if ( data.bumpScale ) {
if ( data.bumpScale !== undefined ) {
material.bumpScale = data.bumpScale;
}
......@@ -268,7 +268,7 @@ THREE.ObjectLoader.prototype = {
if ( data.normalMap !== undefined ) {
material.normalMap = getTexture( data.normalMap );
if ( data.normalScale ) {
if ( data.normalScale !== undefined ) {
material.normalScale = new THREE.Vector2( data.normalScale, data.normalScale );
}
......@@ -278,6 +278,18 @@ THREE.ObjectLoader.prototype = {
material.lightMap = getTexture( data.lightMap );
if ( data.lightMapIntensity !== undefined ) {
material.lightMapIntensity = data.lightMapIntensity;
}
}
if ( data.aoMap !== undefined ) {
material.aoMap = getTexture( data.aoMap );
if ( data.aoMapIntensity !== undefined ) {
material.aoMapIntensity = data.aoMapIntensity;
}
}
if ( data.specularMap !== undefined ) {
......
......@@ -12,6 +12,10 @@
* map: new THREE.Texture( <Image> ),
*
* lightMap: new THREE.Texture( <Image> ),
* lightMapIntensity: <float>
*
* aoMap: new THREE.Texture( <Image> ),
* aoMapIntensity: <float>
*
* bumpMap: new THREE.Texture( <Image> ),
* bumpScale: <float>,
......@@ -65,6 +69,10 @@ THREE.MeshPhongMaterial = function ( parameters ) {
this.map = null;
this.lightMap = null;
this.lightMapIntensity = 1.0;
this.aoMap = null;
this.aoMapIntensity = 1.0;
this.bumpMap = null;
this.bumpScale = 1;
......@@ -122,6 +130,10 @@ THREE.MeshPhongMaterial.prototype.clone = function () {
material.map = this.map;
material.lightMap = this.lightMap;
material.lightMapIntensity = this.lightMapIntensity;
material.aoMap = this.aoMap;
material.aoMapIntensity = this.aoMapIntensity;
material.bumpMap = this.bumpMap;
material.bumpScale = this.bumpScale;
......
......@@ -4139,6 +4139,7 @@ THREE.WebGLRenderer = function ( parameters ) {
envMap: !! material.envMap,
envMapMode: material.envMap && material.envMap.mapping,
lightMap: !! material.lightMap,
aoMap: !! material.aoMap,
bumpMap: !! material.bumpMap,
normalMap: !! material.normalMap,
specularMap: !! material.specularMap,
......@@ -4581,6 +4582,9 @@ THREE.WebGLRenderer = function ( parameters ) {
uniforms.map.value = material.map;
uniforms.lightMap.value = material.lightMap;
uniforms.lightMapIntensity.value = material.lightMapIntensity;
uniforms.aoMap.value = material.aoMap;
uniforms.aoMapIntensity.value = material.aoMapIntensity;
uniforms.specularMap.value = material.specularMap;
uniforms.alphaMap.value = material.alphaMap;
......
#ifdef USE_AOMAP
outgoingLight *= ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
#endif
\ No newline at end of file
#ifdef USE_AOMAP
uniform sampler2D aoMap;
uniform float aoMapIntensity;
#endif
\ No newline at end of file
#ifdef USE_LIGHTMAP
outgoingLight *= diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;
outgoingLight += diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;
#endif
\ No newline at end of file
#ifdef USE_LIGHTMAP
varying vec2 vUv2;
uniform sampler2D lightMap;
uniform float lightMapIntensity;
#endif
\ No newline at end of file
#ifdef USE_LIGHTMAP
varying vec2 vUv2;
#endif
\ No newline at end of file
#ifdef USE_LIGHTMAP
vUv2 = uv2;
#endif
\ No newline at end of file
#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )
varying vec2 vUv;
#endif
#ifdef USE_MAP
uniform sampler2D map;
......
#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
varying vec2 vUv2;
#endif
\ No newline at end of file
#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
attribute vec2 uv2;
varying vec2 vUv2;
#endif
\ No newline at end of file
#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
vUv2 = uv2;
#endif
\ No newline at end of file
#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )
varying vec2 vUv;
#endif
\ No newline at end of file
......@@ -22,8 +22,8 @@ THREE.ShaderLib = {
vertexShader: [
THREE.ShaderChunk[ "common" ],
THREE.ShaderChunk[ "map_pars_vertex" ],
THREE.ShaderChunk[ "lightmap_pars_vertex" ],
THREE.ShaderChunk[ "uv_pars_vertex" ],
THREE.ShaderChunk[ "uv2_pars_vertex" ],
THREE.ShaderChunk[ "envmap_pars_vertex" ],
THREE.ShaderChunk[ "color_pars_vertex" ],
THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
......@@ -33,8 +33,8 @@ THREE.ShaderLib = {
"void main() {",
THREE.ShaderChunk[ "map_vertex" ],
THREE.ShaderChunk[ "lightmap_vertex" ],
THREE.ShaderChunk[ "uv_vertex" ],
THREE.ShaderChunk[ "uv2_vertex" ],
THREE.ShaderChunk[ "color_vertex" ],
THREE.ShaderChunk[ "skinbase_vertex" ],
......@@ -66,8 +66,11 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "common" ],
THREE.ShaderChunk[ "color_pars_fragment" ],
THREE.ShaderChunk[ "uv_pars_fragment" ],
THREE.ShaderChunk[ "uv2_pars_fragment" ],
THREE.ShaderChunk[ "map_pars_fragment" ],
THREE.ShaderChunk[ "alphamap_pars_fragment" ],
THREE.ShaderChunk[ "aomap_pars_fragment" ],
THREE.ShaderChunk[ "lightmap_pars_fragment" ],
THREE.ShaderChunk[ "envmap_pars_fragment" ],
THREE.ShaderChunk[ "fog_pars_fragment" ],
......@@ -89,7 +92,8 @@ THREE.ShaderLib = {
" outgoingLight = diffuseColor.rgb;", // simple shader
THREE.ShaderChunk[ "lightmap_fragment" ], // TODO: Light map on an otherwise unlit surface doesn't make sense.
THREE.ShaderChunk[ "aomap_fragment" ],
THREE.ShaderChunk[ "lightmap_fragment" ],
THREE.ShaderChunk[ "envmap_fragment" ],
THREE.ShaderChunk[ "shadowmap_fragment" ], // TODO: Shadows on an otherwise unlit surface doesn't make sense.
......@@ -134,8 +138,8 @@ THREE.ShaderLib = {
"#endif",
THREE.ShaderChunk[ "common" ],
THREE.ShaderChunk[ "map_pars_vertex" ],
THREE.ShaderChunk[ "lightmap_pars_vertex" ],
THREE.ShaderChunk[ "uv_pars_vertex" ],
THREE.ShaderChunk[ "uv2_pars_vertex" ],
THREE.ShaderChunk[ "envmap_pars_vertex" ],
THREE.ShaderChunk[ "lights_lambert_pars_vertex" ],
THREE.ShaderChunk[ "color_pars_vertex" ],
......@@ -146,8 +150,8 @@ THREE.ShaderLib = {
"void main() {",
THREE.ShaderChunk[ "map_vertex" ],
THREE.ShaderChunk[ "lightmap_vertex" ],
THREE.ShaderChunk[ "uv_vertex" ],
THREE.ShaderChunk[ "uv2_vertex" ],
THREE.ShaderChunk[ "color_vertex" ],
THREE.ShaderChunk[ "morphnormal_vertex" ],
......@@ -185,8 +189,11 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "common" ],
THREE.ShaderChunk[ "color_pars_fragment" ],
THREE.ShaderChunk[ "uv_pars_fragment" ],
THREE.ShaderChunk[ "uv2_pars_fragment" ],
THREE.ShaderChunk[ "map_pars_fragment" ],
THREE.ShaderChunk[ "alphamap_pars_fragment" ],
THREE.ShaderChunk[ "aomap_pars_fragment" ],
THREE.ShaderChunk[ "lightmap_pars_fragment" ],
THREE.ShaderChunk[ "envmap_pars_fragment" ],
THREE.ShaderChunk[ "fog_pars_fragment" ],
......@@ -222,6 +229,7 @@ THREE.ShaderLib = {
" #endif",
THREE.ShaderChunk[ "aomap_fragment" ],
THREE.ShaderChunk[ "lightmap_fragment" ],
THREE.ShaderChunk[ "envmap_fragment" ],
THREE.ShaderChunk[ "shadowmap_fragment" ],
......@@ -271,8 +279,8 @@ THREE.ShaderLib = {
"#endif",
THREE.ShaderChunk[ "common" ],
THREE.ShaderChunk[ "map_pars_vertex" ],
THREE.ShaderChunk[ "lightmap_pars_vertex" ],
THREE.ShaderChunk[ "uv_pars_vertex" ],
THREE.ShaderChunk[ "uv2_pars_vertex" ],
THREE.ShaderChunk[ "envmap_pars_vertex" ],
THREE.ShaderChunk[ "lights_phong_pars_vertex" ],
THREE.ShaderChunk[ "color_pars_vertex" ],
......@@ -283,8 +291,8 @@ THREE.ShaderLib = {
"void main() {",
THREE.ShaderChunk[ "map_vertex" ],
THREE.ShaderChunk[ "lightmap_vertex" ],
THREE.ShaderChunk[ "uv_vertex" ],
THREE.ShaderChunk[ "uv2_vertex" ],
THREE.ShaderChunk[ "color_vertex" ],
THREE.ShaderChunk[ "morphnormal_vertex" ],
......@@ -326,8 +334,11 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "common" ],
THREE.ShaderChunk[ "color_pars_fragment" ],
THREE.ShaderChunk[ "uv_pars_fragment" ],
THREE.ShaderChunk[ "uv2_pars_fragment" ],
THREE.ShaderChunk[ "map_pars_fragment" ],
THREE.ShaderChunk[ "alphamap_pars_fragment" ],
THREE.ShaderChunk[ "aomap_pars_fragment" ],
THREE.ShaderChunk[ "lightmap_pars_fragment" ],
THREE.ShaderChunk[ "envmap_pars_fragment" ],
THREE.ShaderChunk[ "fog_pars_fragment" ],
......@@ -352,6 +363,7 @@ THREE.ShaderLib = {
THREE.ShaderChunk[ "lights_phong_fragment" ],
THREE.ShaderChunk[ "aomap_fragment" ],
THREE.ShaderChunk[ "lightmap_fragment" ],
THREE.ShaderChunk[ "envmap_fragment" ],
THREE.ShaderChunk[ "shadowmap_fragment" ],
......
......@@ -13,6 +13,11 @@ THREE.UniformsLib = {
"offsetRepeat" : { type: "v4", value: new THREE.Vector4( 0, 0, 1, 1 ) },
"lightMap" : { type: "t", value: null },
"lightMapIntensity" : { type: "f", value: 1 },
"aoMap" : { type: "t", value: null },
"aoMapIntensity" : { type: "f", value: 1 },
"specularMap" : { type: "t", value: null },
"alphaMap" : { type: "t", value: null },
......
......@@ -182,6 +182,7 @@ THREE.WebGLProgram = ( function () {
parameters.envMap ? '#define USE_ENVMAP' : '',
parameters.envMap ? '#define ' + envMapModeDefine : '',
parameters.lightMap ? '#define USE_LIGHTMAP' : '',
parameters.aoMap ? '#define USE_AOMAP' : '',
parameters.bumpMap ? '#define USE_BUMPMAP' : '',
parameters.normalMap ? '#define USE_NORMALMAP' : '',
parameters.specularMap ? '#define USE_SPECULARMAP' : '',
......@@ -220,7 +221,6 @@ THREE.WebGLProgram = ( function () {
'attribute vec3 position;',
'attribute vec3 normal;',
'attribute vec2 uv;',
'attribute vec2 uv2;',
'#ifdef USE_COLOR',
......@@ -295,6 +295,7 @@ THREE.WebGLProgram = ( function () {
parameters.envMap ? '#define ' + envMapModeDefine : '',
parameters.envMap ? '#define ' + envMapBlendingDefine : '',
parameters.lightMap ? '#define USE_LIGHTMAP' : '',
parameters.aoMap ? '#define USE_AOMAP' : '',
parameters.bumpMap ? '#define USE_BUMPMAP' : '',
parameters.normalMap ? '#define USE_NORMALMAP' : '',
parameters.specularMap ? '#define USE_SPECULARMAP' : '',
......
......@@ -84,59 +84,63 @@
"src/scenes/Fog.js",
"src/scenes/FogExp2.js",
"src/renderers/shaders/ShaderChunk.js",
"src/renderers/shaders/ShaderChunk/common.glsl",
"src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl",
"src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl",
"src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/aomap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/color_fragment.glsl",
"src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/color_vertex.glsl",
"src/renderers/shaders/ShaderChunk/common.glsl",
"src/renderers/shaders/ShaderChunk/default_vertex.glsl",
"src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl",
"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lightmap_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl",
"src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl",
"src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl",
"src/renderers/shaders/ShaderChunk/envmap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl",
"src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/lights_phong_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/envmap_vertex.glsl",
"src/renderers/shaders/ShaderChunk/fog_fragment.glsl",
"src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lights_lambert_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl",
"src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/lights_phong_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lights_phong_vertex.glsl",
"src/renderers/shaders/ShaderChunk/map_fragment.glsl",
"src/renderers/shaders/ShaderChunk/lightmap_vertex.glsl",
"src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl",
"src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/color_vertex.glsl",
"src/renderers/shaders/ShaderChunk/skinning_vertex.glsl",
"src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/linear_to_gamma_fragment.glsl",
"src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lights_lambert_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/map_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/envmap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl",
"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl",
"src/renderers/shaders/ShaderChunk/map_fragment.glsl",
"src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl",
"src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl",
"src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/fog_fragment.glsl",
"src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl",
"src/renderers/shaders/ShaderChunk/map_vertex.glsl",
"src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/color_fragment.glsl",
"src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl",
"src/renderers/shaders/ShaderChunk/envmap_vertex.glsl",
"src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl",
"src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl",
"src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/skinning_vertex.glsl",
"src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl",
"src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl",
"src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/uv2_vertex.glsl",
"src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl",
"src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl",
"src/renderers/shaders/ShaderChunk/uv_vertex.glsl",
"src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl",
"src/renderers/shaders/UniformsUtils.js",
"src/renderers/shaders/UniformsLib.js",
"src/renderers/shaders/ShaderLib.js",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册