提交 ef46e1e4 编写于 作者: M Mugen87

Examples: Clean up.

上级 3492536c
...@@ -4,11 +4,9 @@ ...@@ -4,11 +4,9 @@
import { TempNode } from '../core/TempNode.js'; import { TempNode } from '../core/TempNode.js';
import { FloatNode } from '../inputs/FloatNode.js'; import { FloatNode } from '../inputs/FloatNode.js';
import { ExpressionNode } from '../core/ExpressionNode.js';
import { TextureCubeUVNode } from './TextureCubeUVNode.js'; import { TextureCubeUVNode } from './TextureCubeUVNode.js';
import { ReflectNode } from '../accessors/ReflectNode.js'; import { ReflectNode } from '../accessors/ReflectNode.js';
import { NormalNode } from '../accessors/NormalNode.js'; import { NormalNode } from '../accessors/NormalNode.js';
import { ColorSpaceNode } from '../utils/ColorSpaceNode.js';
function TextureCubeNode( value, uv, bias ) { function TextureCubeNode( value, uv, bias ) {
......
...@@ -8,11 +8,9 @@ import { StructNode } from '../core/StructNode.js'; ...@@ -8,11 +8,9 @@ import { StructNode } from '../core/StructNode.js';
import { FunctionNode } from '../core/FunctionNode.js'; import { FunctionNode } from '../core/FunctionNode.js';
import { FunctionCallNode } from '../core/FunctionCallNode.js'; import { FunctionCallNode } from '../core/FunctionCallNode.js';
import { ExpressionNode } from '../core/ExpressionNode.js'; import { ExpressionNode } from '../core/ExpressionNode.js';
import { ReflectNode } from '../accessors/ReflectNode.js';
import { FloatNode } from '../inputs/FloatNode.js'; import { FloatNode } from '../inputs/FloatNode.js';
import { OperatorNode } from '../math/OperatorNode.js'; import { OperatorNode } from '../math/OperatorNode.js';
import { MathNode } from '../math/MathNode.js'; import { MathNode } from '../math/MathNode.js';
import { CondNode } from '../math/CondNode.js';
import { ColorSpaceNode } from '../utils/ColorSpaceNode.js'; import { ColorSpaceNode } from '../utils/ColorSpaceNode.js';
function TextureCubeUVNode( value, uv, bias ) { function TextureCubeUVNode( value, uv, bias ) {
...@@ -28,13 +26,13 @@ function TextureCubeUVNode( value, uv, bias ) { ...@@ -28,13 +26,13 @@ function TextureCubeUVNode( value, uv, bias ) {
TextureCubeUVNode.Nodes = ( function () { TextureCubeUVNode.Nodes = ( function () {
var TextureCubeUVData = new StructNode( var TextureCubeUVData = new StructNode(
`struct TextureCubeUVData { `struct TextureCubeUVData {
vec4 tl; vec4 tl;
vec4 tr; vec4 tr;
vec4 br; vec4 br;
vec4 bl; vec4 bl;
vec2 f; vec2 f;
}` ); }` );
var cubeUV_maxMipLevel = new ConstNode( `float cubeUV_maxMipLevel 8.0`, true ); var cubeUV_maxMipLevel = new ConstNode( `float cubeUV_maxMipLevel 8.0`, true );
var cubeUV_minMipLevel = new ConstNode( `float cubeUV_minMipLevel 4.0`, true ); var cubeUV_minMipLevel = new ConstNode( `float cubeUV_minMipLevel 4.0`, true );
...@@ -46,75 +44,75 @@ TextureCubeUVNode.Nodes = ( function () { ...@@ -46,75 +44,75 @@ TextureCubeUVNode.Nodes = ( function () {
// sampling a textureCube (not generally normalized). // sampling a textureCube (not generally normalized).
var getFace = new FunctionNode( var getFace = new FunctionNode(
`float getFace(vec3 direction) { `float getFace(vec3 direction) {
vec3 absDirection = abs(direction); vec3 absDirection = abs(direction);
float face = -1.0; float face = -1.0;
if (absDirection.x > absDirection.z) { if (absDirection.x > absDirection.z) {
if (absDirection.x > absDirection.y) if (absDirection.x > absDirection.y)
face = direction.x > 0.0 ? 0.0 : 3.0; face = direction.x > 0.0 ? 0.0 : 3.0;
else else
face = direction.y > 0.0 ? 1.0 : 4.0; face = direction.y > 0.0 ? 1.0 : 4.0;
} else { } else {
if (absDirection.z > absDirection.y) if (absDirection.z > absDirection.y)
face = direction.z > 0.0 ? 2.0 : 5.0; face = direction.z > 0.0 ? 2.0 : 5.0;
else else
face = direction.y > 0.0 ? 1.0 : 4.0; face = direction.y > 0.0 ? 1.0 : 4.0;
} }
return face; return face;
}` ); }` );
getFace.useKeywords = false; getFace.useKeywords = false;
var getUV = new FunctionNode( var getUV = new FunctionNode(
`vec2 getUV(vec3 direction, float face) { `vec2 getUV(vec3 direction, float face) {
vec2 uv; vec2 uv;
if (face == 0.0) { if (face == 0.0) {
uv = vec2(-direction.z, direction.y) / abs(direction.x); uv = vec2(-direction.z, direction.y) / abs(direction.x);
} else if (face == 1.0) { } else if (face == 1.0) {
uv = vec2(direction.x, -direction.z) / abs(direction.y); uv = vec2(direction.x, -direction.z) / abs(direction.y);
} else if (face == 2.0) { } else if (face == 2.0) {
uv = direction.xy / abs(direction.z); uv = direction.xy / abs(direction.z);
} else if (face == 3.0) { } else if (face == 3.0) {
uv = vec2(direction.z, direction.y) / abs(direction.x); uv = vec2(direction.z, direction.y) / abs(direction.x);
} else if (face == 4.0) { } else if (face == 4.0) {
uv = direction.xz / abs(direction.y); uv = direction.xz / abs(direction.y);
} else { } else {
uv = vec2(-direction.x, direction.y) / abs(direction.z); uv = vec2(-direction.x, direction.y) / abs(direction.z);
} }
return 0.5 * (uv + 1.0); return 0.5 * (uv + 1.0);
}` ); }` );
getUV.useKeywords = false; getUV.useKeywords = false;
var bilinearCubeUV = new FunctionNode( var bilinearCubeUV = new FunctionNode(
`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) { `TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
float face = getFace(direction); float face = getFace(direction);
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0); float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
mipInt = max(mipInt, cubeUV_minMipLevel); mipInt = max(mipInt, cubeUV_minMipLevel);
float faceSize = exp2(mipInt); float faceSize = exp2(mipInt);
float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize); float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
vec2 uv = getUV(direction, face) * (faceSize - 1.0); vec2 uv = getUV(direction, face) * (faceSize - 1.0);
vec2 f = fract(uv); vec2 f = fract(uv);
uv += 0.5 - f; uv += 0.5 - f;
if (face > 2.0) { if (face > 2.0) {
uv.y += faceSize; uv.y += faceSize;
face -= 3.0; face -= 3.0;
} }
uv.x += face * faceSize; uv.x += face * faceSize;
if(mipInt < cubeUV_maxMipLevel){ if(mipInt < cubeUV_maxMipLevel){
uv.y += 2.0 * cubeUV_maxTileSize; uv.y += 2.0 * cubeUV_maxTileSize;
} }
uv.y += filterInt * 2.0 * cubeUV_minTileSize; uv.y += filterInt * 2.0 * cubeUV_minTileSize;
uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize); uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
uv *= texelSize; uv *= texelSize;
vec4 tl = texture2D(envMap, uv); vec4 tl = texture2D(envMap, uv);
uv.x += texelSize; uv.x += texelSize;
vec4 tr = texture2D(envMap, uv); vec4 tr = texture2D(envMap, uv);
uv.y += texelSize; uv.y += texelSize;
vec4 br = texture2D(envMap, uv); vec4 br = texture2D(envMap, uv);
uv.x -= texelSize; uv.x -= texelSize;
vec4 bl = texture2D(envMap, uv); vec4 bl = texture2D(envMap, uv);
return TextureCubeUVData( tl, tr, br, bl, f ); return TextureCubeUVData( tl, tr, br, bl, f );
}`, [ TextureCubeUVData, getFace, getUV, cubeUV_maxMipLevel, cubeUV_minMipLevel, cubeUV_maxTileSize, cubeUV_minTileSize ] ); }`, [ TextureCubeUVData, getFace, getUV, cubeUV_maxMipLevel, cubeUV_minMipLevel, cubeUV_maxTileSize, cubeUV_minTileSize ] );
bilinearCubeUV.useKeywords = false; bilinearCubeUV.useKeywords = false;
// These defines must match with PMREMGenerator // These defines must match with PMREMGenerator
...@@ -138,21 +136,21 @@ TextureCubeUVNode.Nodes = ( function () { ...@@ -138,21 +136,21 @@ TextureCubeUVNode.Nodes = ( function () {
var defines = [ r0, v0, m0, r1, v1, m1, r4, v4, m4, r5, v5, m5, r6, v6, m6 ]; var defines = [ r0, v0, m0, r1, v1, m1, r4, v4, m4, r5, v5, m5, r6, v6, m6 ];
var roughnessToMip = new FunctionNode( var roughnessToMip = new FunctionNode(
`float roughnessToMip(float roughness) { `float roughnessToMip(float roughness) {
float mip = 0.0; float mip = 0.0;
if (roughness >= r1) { if (roughness >= r1) {
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0; mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
} else if (roughness >= r4) { } else if (roughness >= r4) {
mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1; mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
} else if (roughness >= r5) { } else if (roughness >= r5) {
mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4; mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
} else if (roughness >= r6) { } else if (roughness >= r6) {
mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5; mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
} else { } else {
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25 mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
} }
return mip; return mip;
}`, defines ); }`, defines );
return { return {
bilinearCubeUV: bilinearCubeUV, bilinearCubeUV: bilinearCubeUV,
...@@ -168,27 +166,27 @@ TextureCubeUVNode.prototype.constructor = TextureCubeUVNode; ...@@ -168,27 +166,27 @@ TextureCubeUVNode.prototype.constructor = TextureCubeUVNode;
TextureCubeUVNode.prototype.nodeType = "TextureCubeUV"; TextureCubeUVNode.prototype.nodeType = "TextureCubeUV";
TextureCubeUVNode.prototype.bilinearCubeUV = function ( builder, texture, uv, mipInt ) { TextureCubeUVNode.prototype.bilinearCubeUV = function ( builder, texture, uv, mipInt ) {
var bilinearCubeUV = new FunctionCallNode( TextureCubeUVNode.Nodes.bilinearCubeUV, [ texture, uv, mipInt ] ); var bilinearCubeUV = new FunctionCallNode( TextureCubeUVNode.Nodes.bilinearCubeUV, [ texture, uv, mipInt ] );
this.colorSpaceTL = this.colorSpaceTL || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) ); this.colorSpaceTL = this.colorSpaceTL || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
this.colorSpaceTL.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) ); this.colorSpaceTL.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
this.colorSpaceTL.input.parse( bilinearCubeUV.build( builder ) + '.tl' ); this.colorSpaceTL.input.parse( bilinearCubeUV.build( builder ) + '.tl' );
this.colorSpaceTR = this.colorSpaceTR || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) ); this.colorSpaceTR = this.colorSpaceTR || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
this.colorSpaceTR.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) ); this.colorSpaceTR.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
this.colorSpaceTR.input.parse( bilinearCubeUV.build( builder ) + '.tr' ); this.colorSpaceTR.input.parse( bilinearCubeUV.build( builder ) + '.tr' );
this.colorSpaceBL = this.colorSpaceBL || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) ); this.colorSpaceBL = this.colorSpaceBL || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
this.colorSpaceBL.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) ); this.colorSpaceBL.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
this.colorSpaceBL.input.parse( bilinearCubeUV.build( builder ) + '.bl' ); this.colorSpaceBL.input.parse( bilinearCubeUV.build( builder ) + '.bl' );
this.colorSpaceBR = this.colorSpaceBR || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) ); this.colorSpaceBR = this.colorSpaceBR || new ColorSpaceNode( new ExpressionNode( '', 'v4' ) );
this.colorSpaceBR.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) ); this.colorSpaceBR.fromDecoding( builder.getTextureEncodingFromMap( this.value.value ) );
this.colorSpaceBR.input.parse( bilinearCubeUV.build( builder ) + '.br' ); this.colorSpaceBR.input.parse( bilinearCubeUV.build( builder ) + '.br' );
var f = bilinearCubeUV.build( builder ) + '.f'; var f = bilinearCubeUV.build( builder ) + '.f';
// add a custom context for fix incompatibility with the core // add a custom context for fix incompatibility with the core
// include ColorSpace function only for vertex shader (in fragment shader color space functions is added automatically by core) // include ColorSpace function only for vertex shader (in fragment shader color space functions is added automatically by core)
// this should be removed in the future // this should be removed in the future
...@@ -197,7 +195,7 @@ TextureCubeUVNode.prototype.bilinearCubeUV = function ( builder, texture, uv, mi ...@@ -197,7 +195,7 @@ TextureCubeUVNode.prototype.bilinearCubeUV = function ( builder, texture, uv, mi
var context = { include: builder.isShader( 'vertex' ), ignoreCache: true }; var context = { include: builder.isShader( 'vertex' ), ignoreCache: true };
builder.addContext( context ); builder.addContext( context );
this.colorSpaceTLExp = new ExpressionNode( this.colorSpaceTL.build( builder, 'v4' ), 'v4' ); this.colorSpaceTLExp = new ExpressionNode( this.colorSpaceTL.build( builder, 'v4' ), 'v4' );
this.colorSpaceTRExp = new ExpressionNode( this.colorSpaceTR.build( builder, 'v4' ), 'v4' ); this.colorSpaceTRExp = new ExpressionNode( this.colorSpaceTR.build( builder, 'v4' ), 'v4' );
this.colorSpaceBLExp = new ExpressionNode( this.colorSpaceBL.build( builder, 'v4' ), 'v4' ); this.colorSpaceBLExp = new ExpressionNode( this.colorSpaceBL.build( builder, 'v4' ), 'v4' );
...@@ -209,15 +207,15 @@ TextureCubeUVNode.prototype.bilinearCubeUV = function ( builder, texture, uv, mi ...@@ -209,15 +207,15 @@ TextureCubeUVNode.prototype.bilinearCubeUV = function ( builder, texture, uv, mi
// -- // --
var output = new ExpressionNode(`mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )`, 'v4' ); var output = new ExpressionNode( `mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )`, 'v4' );
output.keywords['cubeUV_TL'] = this.colorSpaceTLExp; output.keywords[ 'cubeUV_TL' ] = this.colorSpaceTLExp;
output.keywords['cubeUV_TR'] = this.colorSpaceTRExp; output.keywords[ 'cubeUV_TR' ] = this.colorSpaceTRExp;
output.keywords['cubeUV_BL'] = this.colorSpaceBLExp; output.keywords[ 'cubeUV_BL' ] = this.colorSpaceBLExp;
output.keywords['cubeUV_BR'] = this.colorSpaceBRExp; output.keywords[ 'cubeUV_BR' ] = this.colorSpaceBRExp;
output.keywords['cubeUV'] = bilinearCubeUV; output.keywords[ 'cubeUV' ] = bilinearCubeUV;
return output; return output;
}; };
TextureCubeUVNode.prototype.generate = function ( builder, output ) { TextureCubeUVNode.prototype.generate = function ( builder, output ) {
...@@ -229,8 +227,8 @@ TextureCubeUVNode.prototype.generate = function ( builder, output ) { ...@@ -229,8 +227,8 @@ TextureCubeUVNode.prototype.generate = function ( builder, output ) {
var mipV = new FunctionCallNode( TextureCubeUVNode.Nodes.roughnessToMip, [ bias ] ); var mipV = new FunctionCallNode( TextureCubeUVNode.Nodes.roughnessToMip, [ bias ] );
var mip = new MathNode( mipV, TextureCubeUVNode.Nodes.m0, TextureCubeUVNode.Nodes.cubeUV_maxMipLevel, MathNode.CLAMP ); var mip = new MathNode( mipV, TextureCubeUVNode.Nodes.m0, TextureCubeUVNode.Nodes.cubeUV_maxMipLevel, MathNode.CLAMP );
var mipInt = new MathNode( mip, MathNode.FLOOR ); var mipInt = new MathNode( mip, MathNode.FLOOR );
var mipF = new MathNode( mip, MathNode.FRACT ); var mipF = new MathNode( mip, MathNode.FRACT );
var color0 = this.bilinearCubeUV( builder, this.value, uv, mipInt ); var color0 = this.bilinearCubeUV( builder, this.value, uv, mipInt );
var color1 = this.bilinearCubeUV( builder, this.value, uv, new OperatorNode( var color1 = this.bilinearCubeUV( builder, this.value, uv, new OperatorNode(
...@@ -241,16 +239,16 @@ TextureCubeUVNode.prototype.generate = function ( builder, output ) { ...@@ -241,16 +239,16 @@ TextureCubeUVNode.prototype.generate = function ( builder, output ) {
var color1Mix = new MathNode( color0, color1, mipF, MathNode.MIX ); var color1Mix = new MathNode( color0, color1, mipF, MathNode.MIX );
/* /*
// TODO: Optimize this in the future // TODO: Optimize this in the future
var cond = new CondNode( var cond = new CondNode(
mipF, mipF,
new FloatNode( 0 ).setReadonly( true ), new FloatNode( 0 ).setReadonly( true ),
CondNode.EQUAL, CondNode.EQUAL,
color0, // if color0, // if
color1Mix // else color1Mix // else
); );
*/ */
return builder.format( color1Mix.build( builder ), 'v4', output ); return builder.format( color1Mix.build( builder ), 'v4', output );
......
...@@ -47,31 +47,31 @@ ...@@ -47,31 +47,31 @@
var envScene = new THREE.Scene(); var envScene = new THREE.Scene();
var geometry = new THREE.BoxBufferGeometry(); var geometry = new THREE.BoxBufferGeometry();
geometry.deleteAttribute('uv'); geometry.deleteAttribute( 'uv' );
var roomMaterial = new THREE.MeshStandardMaterial({metalness: 0, side: THREE.BackSide}); var roomMaterial = new THREE.MeshStandardMaterial( { metalness: 0, side: THREE.BackSide } );
var room = new THREE.Mesh(geometry, roomMaterial); var room = new THREE.Mesh( geometry, roomMaterial );
room.scale.setScalar(10); room.scale.setScalar( 10 );
envScene.add(room); envScene.add( room );
var mainLight = new THREE.PointLight(0xffffff, 50, 0, 2); var mainLight = new THREE.PointLight( 0xffffff, 50, 0, 2 );
envScene.add(mainLight); envScene.add( mainLight );
var lightMaterial = new THREE.MeshLambertMaterial( { color: 0x000000, emissive: 0xffffff, emissiveIntensity: 10 } ); var lightMaterial = new THREE.MeshLambertMaterial( { color: 0x000000, emissive: 0xffffff, emissiveIntensity: 10 } );
var light1 = new THREE.Mesh(geometry, lightMaterial); var light1 = new THREE.Mesh( geometry, lightMaterial );
light1.position.set(-5, 2, 0); light1.position.set( - 5, 2, 0 );
light1.scale.set(0.1, 1, 1); light1.scale.set( 0.1, 1, 1 );
envScene.add(light1); envScene.add( light1 );
var light2 = new THREE.Mesh(geometry, lightMaterial); var light2 = new THREE.Mesh( geometry, lightMaterial );
light2.position.set(0, 5, 0); light2.position.set( 0, 5, 0 );
light2.scale.set(1, 0.1, 1); light2.scale.set( 1, 0.1, 1 );
envScene.add(light2); envScene.add( light2 );
var light2 = new THREE.Mesh(geometry, lightMaterial); var light2 = new THREE.Mesh( geometry, lightMaterial );
light2.position.set(2, 1, 5); light2.position.set( 2, 1, 5 );
light2.scale.set(1.5, 2, 0.1); light2.scale.set( 1.5, 2, 0.1 );
envScene.add(light2); envScene.add( light2 );
return envScene; return envScene;
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
pmremGenerator.dispose(); pmremGenerator.dispose();
} };
var envScene = getEnvScene(); var envScene = getEnvScene();
generatedCubeRenderTarget = pmremGenerator.fromScene( envScene, 0.04 ); generatedCubeRenderTarget = pmremGenerator.fromScene( envScene, 0.04 );
......
...@@ -51,31 +51,31 @@ ...@@ -51,31 +51,31 @@
var envScene = new THREE.Scene(); var envScene = new THREE.Scene();
var geometry = new THREE.BoxBufferGeometry(); var geometry = new THREE.BoxBufferGeometry();
geometry.deleteAttribute('uv'); geometry.deleteAttribute( 'uv' );
var roomMaterial = new THREE.MeshStandardMaterial({metalness: 0, side: THREE.BackSide}); var roomMaterial = new THREE.MeshStandardMaterial( { metalness: 0, side: THREE.BackSide } );
var room = new THREE.Mesh(geometry, roomMaterial); var room = new THREE.Mesh( geometry, roomMaterial );
room.scale.setScalar(10); room.scale.setScalar( 10 );
envScene.add(room); envScene.add( room );
var mainLight = new THREE.PointLight(0xffffff, 50, 0, 2); var mainLight = new THREE.PointLight( 0xffffff, 50, 0, 2 );
envScene.add(mainLight); envScene.add( mainLight );
var lightMaterial = new THREE.MeshLambertMaterial( { color: 0x000000, emissive: 0xffffff, emissiveIntensity: 10 } ); var lightMaterial = new THREE.MeshLambertMaterial( { color: 0x000000, emissive: 0xffffff, emissiveIntensity: 10 } );
var light1 = new THREE.Mesh(geometry, lightMaterial); var light1 = new THREE.Mesh( geometry, lightMaterial );
light1.position.set(-5, 2, 0); light1.position.set( - 5, 2, 0 );
light1.scale.set(0.1, 1, 1); light1.scale.set( 0.1, 1, 1 );
envScene.add(light1); envScene.add( light1 );
var light2 = new THREE.Mesh(geometry, lightMaterial); var light2 = new THREE.Mesh( geometry, lightMaterial );
light2.position.set(0, 5, 0); light2.position.set( 0, 5, 0 );
light2.scale.set(1, 0.1, 1); light2.scale.set( 1, 0.1, 1 );
envScene.add(light2); envScene.add( light2 );
var light2 = new THREE.Mesh(geometry, lightMaterial); var light2 = new THREE.Mesh( geometry, lightMaterial );
light2.position.set(2, 1, 5); light2.position.set( 2, 1, 5 );
light2.scale.set(1.5, 2, 0.1); light2.scale.set( 1.5, 2, 0.1 );
envScene.add(light2); envScene.add( light2 );
return envScene; return envScene;
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
pmremGenerator.dispose(); pmremGenerator.dispose();
} };
var envScene = getEnvScene(); var envScene = getEnvScene();
generatedCubeRenderTarget = pmremGenerator.fromScene( envScene, 0.04 ); generatedCubeRenderTarget = pmremGenerator.fromScene( envScene, 0.04 );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册