瀏覽代碼

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,
 		and that mip maps have not been otherwise forcibly disabled.</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.
 		</p>
 

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

@@ -136,7 +136,7 @@
 			请确保将minFilter设置为其中一个MipMap选项,并且未强制禁用mip贴图。</p>
 		<p>
 			注意: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]。
 		</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 { GLTFLoader } from './jsm/loaders/GLTFLoader.js';
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
-			import { EquirectangularToCubeGenerator } from './jsm/loaders/EquirectangularToCubeGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
@@ -49,10 +48,14 @@
 					.setPath( 'textures/equirectangular/' )
 					.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 );
 
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
@@ -82,8 +85,6 @@
 						pmremGenerator.dispose();
 						pmremCubeUVPacker.dispose();
 
-						scene.background = cubeGenerator.renderTarget;
-
 					} );
 
 				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 { DRACOLoader } from './jsm/loaders/DRACOLoader.js';
 			import { RGBELoader } from './jsm/loaders/RGBELoader.js';
-			import { EquirectangularToCubeGenerator } from './jsm/loaders/EquirectangularToCubeGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
@@ -159,12 +158,14 @@
 					.setPath( 'textures/equirectangular/' )
 					.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 );
 
 						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 { OrbitControls } from './jsm/controls/OrbitControls.js';
 			import { EXRLoader } from './jsm/loaders/EXRLoader.js';
-			import { EquirectangularToCubeGenerator } from './jsm/loaders/EquirectangularToCubeGenerator.js';
 			import { PMREMGenerator } from './jsm/pmrem/PMREMGenerator.js';
 			import { PMREMCubeUVPacker } from './jsm/pmrem/PMREMCubeUVPacker.js';
 
@@ -75,18 +74,15 @@
 				scene.add( planeMesh );
 
 				new EXRLoader()
-					.setDataType( THREE.FloatType )
+					.setDataType( THREE.HalfFloatType )
 					.load( 'textures/piz_compressed.exr', function ( texture ) {
 
 						texture.minFilter = THREE.NearestFilter;
-						// texture.magFilter = THREE.NearestFilter;
 						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 );
 
 						var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );
@@ -104,12 +100,13 @@
 
 					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 );
 
 					var pmremCubeUVPacker = new PMREMCubeUVPacker( pmremGenerator.cubeLods );