فهرست منبع

Examples: Remove EquirectangularToCubeGenerator.

Mugen87 5 سال پیش
والد
کامیت
834e492751

+ 3 - 3
docs/api/en/materials/MeshStandardMaterial.html

@@ -173,9 +173,9 @@
 		if adjusting texture parameters manually, ensure minFilter is set to one of the MipMap options,
 		if adjusting texture parameters manually, ensure minFilter is set to one of the MipMap options,
 		and that mip maps have not been otherwise forcibly disabled.</p>
 		and that mip maps have not been otherwise forcibly disabled.</p>
 		<p>
 		<p>
-		Note: only [link:https://threejs.org/docs/#api/textures/CubeTexture cube environment maps] are supported 
-		for MeshStandardMaterial. If you want to use an equirectangular map you will need to use the 
-		[link:https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/EquirectangularToCubeGenerator.js EquirectangularToCubeGenerator]. 
+		Note: only [link:https://threejs.org/docs/#api/textures/CubeTexture cube environment maps] are supported
+		for MeshStandardMaterial. If you want to use an equirectangular map you will need to use
+		[page:WebGLRenderTargetCube.fromEquirectangularTexture WebGLRenderTargetCube.fromEquirectangularTexture]().
 		See this [link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example] for details.
 		See this [link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example] for details.
 		</p>
 		</p>
 
 

+ 1 - 1
docs/api/zh/materials/MeshStandardMaterial.html

@@ -136,7 +136,7 @@
 			请确保将minFilter设置为其中一个MipMap选项,并且未强制禁用mip贴图。</p>
 			请确保将minFilter设置为其中一个MipMap选项,并且未强制禁用mip贴图。</p>
 		<p>
 		<p>
 			注意:MeshStandardMaterial 仅支持[link:https://threejs.org/docs/#api/textures/CubeTexture cube environment maps]。
 			注意:MeshStandardMaterial 仅支持[link:https://threejs.org/docs/#api/textures/CubeTexture cube environment maps]。
-			如果要使用equirectangular贴图,则需要使用 [link:https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/EquirectangularToCubeGenerator.js EquirectangularToCubeGenerator]
+			如果要使用equirectangular贴图,则需要使用 [page:WebGLRenderTargetCube.fromEquirectangularTexture WebGLRenderTargetCube.fromEquirectangularTexture]().
 			详细信息请参阅此示例[link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example]。
 			详细信息请参阅此示例[link:https://threejs.org/examples/webgl_materials_envmaps_exr.html example]。
 		</p>
 		</p>
 
 

+ 0 - 126
examples/js/loaders/EquirectangularToCubeGenerator.js

@@ -1,126 +0,0 @@
-/**
-* @author Richard M. / https://github.com/richardmonette
-*/
-
-THREE.EquirectangularToCubeGenerator = ( function () {
-
-	var camera = new THREE.PerspectiveCamera( 90, 1, 0.1, 10 );
-	var scene = new THREE.Scene();
-	var boxMesh = new THREE.Mesh( new THREE.BoxBufferGeometry( 1, 1, 1 ), getShader() );
-	boxMesh.material.side = THREE.BackSide;
-	scene.add( boxMesh );
-
-	var EquirectangularToCubeGenerator = function ( sourceTexture, options ) {
-
-		options = options || {};
-
-		this.sourceTexture = sourceTexture;
-		this.resolution = options.resolution || 512;
-
-		this.views = [
-			{ t: [ 1, 0, 0 ], u: [ 0, - 1, 0 ] },
-			{ t: [ - 1, 0, 0 ], u: [ 0, - 1, 0 ] },
-			{ t: [ 0, 1, 0 ], u: [ 0, 0, 1 ] },
-			{ t: [ 0, - 1, 0 ], u: [ 0, 0, - 1 ] },
-			{ t: [ 0, 0, 1 ], u: [ 0, - 1, 0 ] },
-			{ t: [ 0, 0, - 1 ], u: [ 0, - 1, 0 ] },
-		];
-
-		var params = {
-			format: options.format || this.sourceTexture.format,
-			magFilter: this.sourceTexture.magFilter,
-			minFilter: this.sourceTexture.minFilter,
-			type: options.type || this.sourceTexture.type,
-			generateMipmaps: this.sourceTexture.generateMipmaps,
-			anisotropy: this.sourceTexture.anisotropy,
-			encoding: this.sourceTexture.encoding
-		};
-
-		this.renderTarget = new THREE.WebGLRenderTargetCube( this.resolution, this.resolution, params );
-
-	};
-
-	EquirectangularToCubeGenerator.prototype = {
-
-		constructor: EquirectangularToCubeGenerator,
-
-		update: function ( renderer ) {
-
-			var currentRenderTarget = renderer.getRenderTarget();
-
-			boxMesh.material.uniforms.equirectangularMap.value = this.sourceTexture;
-
-			for ( var i = 0; i < 6; i ++ ) {
-
-				var v = this.views[ i ];
-
-				camera.position.set( 0, 0, 0 );
-				camera.up.set( v.u[ 0 ], v.u[ 1 ], v.u[ 2 ] );
-				camera.lookAt( v.t[ 0 ], v.t[ 1 ], v.t[ 2 ] );
-
-				renderer.setRenderTarget( this.renderTarget, i );
-				renderer.clear();
-				renderer.render( scene, camera );
-
-			}
-
-			renderer.setRenderTarget( currentRenderTarget );
-
-			return this.renderTarget.texture;
-
-		},
-
-		dispose: function () {
-
-			this.renderTarget.dispose();
-
-		}
-
-	};
-
-	function getShader() {
-
-		var shaderMaterial = new THREE.ShaderMaterial( {
-
-			uniforms: {
-				"equirectangularMap": { value: null },
-			},
-
-			vertexShader:
-				"varying vec3 localPosition;\n\
-				\n\
-				void main() {\n\
-					localPosition = position;\n\
-					gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\
-				}",
-
-			fragmentShader:
-				"#include <common>\n\
-				varying vec3 localPosition;\n\
-				uniform sampler2D equirectangularMap;\n\
-				\n\
-				vec2 EquirectangularSampleUV(vec3 v) {\n\
-					vec2 uv = vec2(atan(v.z, v.x), asin(v.y));\n\
-					uv *= vec2(0.1591, 0.3183); // inverse atan\n\
-					uv += 0.5;\n\
-					return uv;\n\
-				}\n\
-				\n\
-				void main() {\n\
-					vec2 uv = EquirectangularSampleUV(normalize(localPosition));\n\
-					gl_FragColor = texture2D(equirectangularMap, uv);\n\
-				}",
-
-			blending: THREE.NoBlending
-
-		} );
-
-		shaderMaterial.type = 'EquirectangularToCubeGenerator';
-
-		return shaderMaterial;
-
-	}
-
-	return EquirectangularToCubeGenerator;
-
-} )();

+ 0 - 25
examples/jsm/loaders/EquirectangularToCubeGenerator.d.ts

@@ -1,25 +0,0 @@
-import {
-	PixelFormat,
-	Texture,
-	TextureDataType,
-	WebGLRenderer,
-	WebGLRenderTargetCube
-} from '../../../src/Three';
-
-export interface EquirectangularToCubeGeneratorOptions {
-	resolution?: number;
-	format?: PixelFormat;
-	type?: TextureDataType;
-}
-
-export class EquirectangularToCubeGenerator {
-
-	constructor( sourceTexture: Texture, options?: EquirectangularToCubeGeneratorOptions );
-	sourceTexture: Texture;
-	resolution: number;
-	renderTarget: WebGLRenderTargetCube;
-
-	dispose(): void;
-	update( renderer: WebGLRenderer ): Texture;
-
-}

+ 0 - 139
examples/jsm/loaders/EquirectangularToCubeGenerator.js

@@ -1,139 +0,0 @@
-/**
-* @author Richard M. / https://github.com/richardmonette
-*/
-
-import {
-	BackSide,
-	BoxBufferGeometry,
-	Mesh,
-	NoBlending,
-	PerspectiveCamera,
-	Scene,
-	ShaderMaterial,
-	WebGLRenderTargetCube
-} from "../../../build/three.module.js";
-
-var EquirectangularToCubeGenerator = ( function () {
-
-	var camera = new PerspectiveCamera( 90, 1, 0.1, 10 );
-	var scene = new Scene();
-	var boxMesh = new Mesh( new BoxBufferGeometry( 1, 1, 1 ), getShader() );
-	boxMesh.material.side = BackSide;
-	scene.add( boxMesh );
-
-	var EquirectangularToCubeGenerator = function ( sourceTexture, options ) {
-
-		options = options || {};
-
-		this.sourceTexture = sourceTexture;
-		this.resolution = options.resolution || 512;
-
-		this.views = [
-			{ t: [ 1, 0, 0 ], u: [ 0, - 1, 0 ] },
-			{ t: [ - 1, 0, 0 ], u: [ 0, - 1, 0 ] },
-			{ t: [ 0, 1, 0 ], u: [ 0, 0, 1 ] },
-			{ t: [ 0, - 1, 0 ], u: [ 0, 0, - 1 ] },
-			{ t: [ 0, 0, 1 ], u: [ 0, - 1, 0 ] },
-			{ t: [ 0, 0, - 1 ], u: [ 0, - 1, 0 ] },
-		];
-
-		var params = {
-			format: options.format || this.sourceTexture.format,
-			magFilter: this.sourceTexture.magFilter,
-			minFilter: this.sourceTexture.minFilter,
-			type: options.type || this.sourceTexture.type,
-			generateMipmaps: this.sourceTexture.generateMipmaps,
-			anisotropy: this.sourceTexture.anisotropy,
-			encoding: this.sourceTexture.encoding
-		};
-
-		this.renderTarget = new WebGLRenderTargetCube( this.resolution, this.resolution, params );
-
-	};
-
-	EquirectangularToCubeGenerator.prototype = {
-
-		constructor: EquirectangularToCubeGenerator,
-
-		update: function ( renderer ) {
-
-			var currentRenderTarget = renderer.getRenderTarget();
-
-			boxMesh.material.uniforms.equirectangularMap.value = this.sourceTexture;
-
-			for ( var i = 0; i < 6; i ++ ) {
-
-				var v = this.views[ i ];
-
-				camera.position.set( 0, 0, 0 );
-				camera.up.set( v.u[ 0 ], v.u[ 1 ], v.u[ 2 ] );
-				camera.lookAt( v.t[ 0 ], v.t[ 1 ], v.t[ 2 ] );
-
-				renderer.setRenderTarget( this.renderTarget, i );
-				renderer.clear();
-				renderer.render( scene, camera );
-
-			}
-
-			renderer.setRenderTarget( currentRenderTarget );
-
-			return this.renderTarget.texture;
-
-		},
-
-		dispose: function () {
-
-			this.renderTarget.dispose();
-
-		}
-
-	};
-
-	function getShader() {
-
-		var shaderMaterial = new ShaderMaterial( {
-
-			uniforms: {
-				"equirectangularMap": { value: null },
-			},
-
-			vertexShader:
-				"varying vec3 localPosition;\n\
-				\n\
-				void main() {\n\
-					localPosition = position;\n\
-					gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\
-				}",
-
-			fragmentShader:
-				"#include <common>\n\
-				varying vec3 localPosition;\n\
-				uniform sampler2D equirectangularMap;\n\
-				\n\
-				vec2 EquirectangularSampleUV(vec3 v) {\n\
-					vec2 uv = vec2(atan(v.z, v.x), asin(v.y));\n\
-					uv *= vec2(0.1591, 0.3183); // inverse atan\n\
-					uv += 0.5;\n\
-					return uv;\n\
-				}\n\
-				\n\
-				void main() {\n\
-					vec2 uv = EquirectangularSampleUV(normalize(localPosition));\n\
-					gl_FragColor = texture2D(equirectangularMap, uv);\n\
-				}",
-
-			blending: NoBlending
-
-		} );
-
-		shaderMaterial.type = 'EquirectangularToCubeGenerator';
-
-		return shaderMaterial;
-
-	}
-
-	return EquirectangularToCubeGenerator;
-
-} )();
-
-export { EquirectangularToCubeGenerator };

+ 7 - 6
examples/webgl_loader_gltf.html

@@ -24,7 +24,6 @@
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { GLTFLoader } from './jsm/loaders/GLTFLoader.js';
 			import { GLTFLoader } from './jsm/loaders/GLTFLoader.js';
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
-			import { EquirectangularToCubeGenerator } from './jsm/loaders/EquirectangularToCubeGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
@@ -49,10 +48,14 @@
 					.setPath( 'textures/equirectangular/' )
 					.setPath( 'textures/equirectangular/' )
 					.load( 'pedestrian_overpass_2k.hdr', function ( texture ) {
 					.load( 'pedestrian_overpass_2k.hdr', function ( texture ) {
 
 
-						var cubeGenerator = new EquirectangularToCubeGenerator( texture, { resolution: 1024 } );
-						cubeGenerator.update( renderer );
+						var options = {
+							minFilter: texture.minFilter,
+							magFilter: texture.magFilter
+						};
 
 
-						var pmremGenerator = new PMREMGenerator( cubeGenerator.renderTarget.texture );
+						scene.background = new THREE.WebGLRenderTargetCube( 1024, 1024, options ).fromEquirectangularTexture( renderer, texture );
+
+						var pmremGenerator = new PMREMGenerator( scene.background.texture );
 						pmremGenerator.update( renderer );
 						pmremGenerator.update( renderer );
 
 
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
@@ -82,8 +85,6 @@
 						pmremGenerator.dispose();
 						pmremGenerator.dispose();
 						pmremCubeUVPacker.dispose();
 						pmremCubeUVPacker.dispose();
 
 
-						scene.background = cubeGenerator.renderTarget;
-
 					} );
 					} );
 
 
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer = new THREE.WebGLRenderer( { antialias: true } );

+ 6 - 5
examples/webgl_loader_gltf_extensions.html

@@ -26,7 +26,6 @@
 			import { DDSLoader } from './jsm/loaders/DDSLoader.js';
 			import { DDSLoader } from './jsm/loaders/DDSLoader.js';
 			import { DRACOLoader } from './jsm/loaders/DRACOLoader.js';
 			import { DRACOLoader } from './jsm/loaders/DRACOLoader.js';
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
-			import { EquirectangularToCubeGenerator } from './jsm/loaders/EquirectangularToCubeGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
@@ -159,12 +158,14 @@
 					.setPath( 'textures/equirectangular/' )
 					.setPath( 'textures/equirectangular/' )
 					.load( 'venice_sunset_2k.hdr', function ( texture ) {
 					.load( 'venice_sunset_2k.hdr', function ( texture ) {
 
 
-						var cubeGenerator = new EquirectangularToCubeGenerator( texture, { resolution: 1024 } );
-						cubeGenerator.update( renderer );
+						var options = {
+							minFilter: texture.minFilter,
+							magFilter: texture.magFilter
+						};
 
 
-						background = cubeGenerator.renderTarget;
+						background = new THREE.WebGLRenderTargetCube( 1024, 1024, options ).fromEquirectangularTexture( renderer, texture );
 
 
-						var pmremGenerator = new PMREMGenerator( cubeGenerator.renderTarget.texture );
+						var pmremGenerator = new PMREMGenerator( background.texture );
 						pmremGenerator.update( renderer );
 						pmremGenerator.update( renderer );
 
 
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );

+ 8 - 11
examples/webgl_materials_envmaps_exr.html

@@ -20,7 +20,6 @@
 			import { GUI } from './jsm/libs/dat.gui.module.js';
 			import { GUI } from './jsm/libs/dat.gui.module.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { EXRLoader } from './jsm/loaders/EXRLoader.js';
 			import { EXRLoader } from './jsm/loaders/EXRLoader.js';
-			import { EquirectangularToCubeGenerator } from './jsm/loaders/EquirectangularToCubeGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
 
@@ -75,18 +74,15 @@
 				scene.add( planeMesh );
 				scene.add( planeMesh );
 
 
 				new EXRLoader()
 				new EXRLoader()
-					.setDataType( THREE.FloatType )
+					.setDataType( THREE.HalfFloatType )
 					.load( 'textures/piz_compressed.exr', function ( texture ) {
 					.load( 'textures/piz_compressed.exr', function ( texture ) {
 
 
 						texture.minFilter = THREE.NearestFilter;
 						texture.minFilter = THREE.NearestFilter;
-						// texture.magFilter = THREE.NearestFilter;
 						texture.encoding = THREE.LinearEncoding;
 						texture.encoding = THREE.LinearEncoding;
 
 
-						var cubemapGenerator = new EquirectangularToCubeGenerator( texture, { resolution: 512, type: THREE.HalfFloatType } );
-						exrBackground = cubemapGenerator.renderTarget;
-						var cubeMapTexture = cubemapGenerator.update( renderer );
+						exrBackground = new THREE.WebGLRenderTargetCube( 512, 512 ).fromEquirectangularTexture( renderer, texture );
 
 
-						var pmremGenerator = new PMREMGenerator( cubeMapTexture );
+						var pmremGenerator = new PMREMGenerator( exrBackground.texture );
 						pmremGenerator.update( renderer );
 						pmremGenerator.update( renderer );
 
 
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
@@ -104,12 +100,13 @@
 
 
 					texture.encoding = THREE.sRGBEncoding;
 					texture.encoding = THREE.sRGBEncoding;
 
 
-					var cubemapGenerator = new EquirectangularToCubeGenerator( texture, { resolution: 512 } );
-					pngBackground = cubemapGenerator.renderTarget;
+					var options = {
+						generateMipmaps: true
+					};
 
 
-					var cubeMapTexture = cubemapGenerator.update( renderer );
+					pngBackground = new THREE.WebGLRenderTargetCube( 512, 512, options ).fromEquirectangularTexture( renderer, texture );
 
 
-					var pmremGenerator = new PMREMGenerator( cubeMapTexture );
+					var pmremGenerator = new PMREMGenerator( pngBackground.texture );
 					pmremGenerator.update( renderer );
 					pmremGenerator.update( renderer );
 
 
 					var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
 					var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );