提交 50d05fc2 编写于 作者: M Mugen87

WebGLRenderer: Add activeCubeFace/activeMipMapLevel to setRenderTarget()

上级 8e4a57b0
...@@ -50,12 +50,6 @@ ...@@ -50,12 +50,6 @@
<h2>Properties</h2> <h2>Properties</h2>
<h3>[property:integer activeCubeFace]</h3>
<p>
The activeCubeFace property corresponds to a cube side (PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) and is
used and set internally by the [page:CubeCamera].
</p>
<h3>See [page:WebGLRenderTarget] for inherited properties</h3> <h3>See [page:WebGLRenderTarget] for inherited properties</h3>
......
...@@ -434,9 +434,11 @@ ...@@ -434,9 +434,11 @@
<h3>[method:null setPixelRatio]( [param:number value] )</h3> <h3>[method:null setPixelRatio]( [param:number value] )</h3>
<p>Sets device pixel ratio. This is usually used for HiDPI device to prevent bluring output canvas.</p> <p>Sets device pixel ratio. This is usually used for HiDPI device to prevent bluring output canvas.</p>
<h3>[method:null setRenderTarget]( [param:WebGLRenderTarget renderTarget] )</h3> <h3>[method:null setRenderTarget]( [param:WebGLRenderTarget renderTarget], [param:Integer activeCubeFace], [param:Integer activeMipMapLevel] )</h3>
<p> <p>
renderTarget -- The [page:WebGLRenderTarget renderTarget] that needs to be activated (optional).<br /><br /> renderTarget -- The [page:WebGLRenderTarget renderTarget] that needs to be activated (optional).<br />
activeCubeFace -- Specifies the active cube side (PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) of [page:WebGLRenderTargetCube] (optional).<br />
activeMipMapLevel -- Specifies the active mipmap level (optional).<br /><br />
This method sets the active rendertarget. If the parameter is omitted the canvas is set as the active rendertarget. This method sets the active rendertarget. If the parameter is omitted the canvas is set as the active rendertarget.
</p> </p>
......
...@@ -47,11 +47,6 @@ ...@@ -47,11 +47,6 @@
<h2>属性</h2> <h2>属性</h2>
<h3>[property:integer activeCubeFace]</h3>
<p>
activeCubeFace属性对应立方体的面(PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) 并由[page:CubeCamera]内部使用和设置
</p>
<h3>继承属性,请参阅[page:WebGLRenderTarget]</h3> <h3>继承属性,请参阅[page:WebGLRenderTarget]</h3>
......
...@@ -387,9 +387,11 @@ ...@@ -387,9 +387,11 @@
<h3>[method:null setPixelRatio]( [param:number value] )</h3> <h3>[method:null setPixelRatio]( [param:number value] )</h3>
<p>设置设备像素比。通常用于避免HiDPI设备上绘图模糊</p> <p>设置设备像素比。通常用于避免HiDPI设备上绘图模糊</p>
<h3>[method:null setRenderTarget]( [param:WebGLRenderTarget renderTarget] )</h3> <h3>[method:null setRenderTarget]( [param:WebGLRenderTarget renderTarget], [param:Integer activeCubeFace], [param:Integer activeMipMapLevel] )</h3>
<p> <p>
renderTarget -- 需要被激活的[page:WebGLRenderTarget renderTarget](可选).<br /><br /> renderTarget -- 需要被激活的[page:WebGLRenderTarget renderTarget](可选).<br />
activeCubeFace -- Specifies the active cube side (PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) of [page:WebGLRenderTargetCube] (optional).<br />
activeMipMapLevel -- Specifies the active mipmap level (optional).<br /><br />
该方法设置活跃rendertarget. 参数缺省则将canvas设置成活跃rendertarget 该方法设置活跃rendertarget. 参数缺省则将canvas设置成活跃rendertarget
</p> </p>
......
...@@ -162,15 +162,13 @@ THREE.EquirectangularToCubeGenerator = ( function () { ...@@ -162,15 +162,13 @@ THREE.EquirectangularToCubeGenerator = ( function () {
for ( var i = 0; i < 6; i ++ ) { for ( var i = 0; i < 6; i ++ ) {
this.renderTarget.activeCubeFace = i;
var v = this.views[ i ]; var v = this.views[ i ];
camera.position.set( 0, 0, 0 ); camera.position.set( 0, 0, 0 );
camera.up.set( v.u[ 0 ], v.u[ 1 ], v.u[ 2 ] ); camera.up.set( v.u[ 0 ], v.u[ 1 ], v.u[ 2 ] );
camera.lookAt( v.t[ 0 ], v.t[ 1 ], v.t[ 2 ] ); camera.lookAt( v.t[ 0 ], v.t[ 1 ], v.t[ 2 ] );
renderer.setRenderTarget( this.renderTarget ); renderer.setRenderTarget( this.renderTarget, i );
renderer.clear(); renderer.clear();
renderer.render( scene, camera ); renderer.render( scene, camera );
......
...@@ -135,9 +135,8 @@ THREE.PMREMGenerator = ( function () { ...@@ -135,9 +135,8 @@ THREE.PMREMGenerator = ( function () {
renderToCubeMapTargetFace: function ( renderer, renderTarget, faceIndex ) { renderToCubeMapTargetFace: function ( renderer, renderTarget, faceIndex ) {
renderTarget.activeCubeFace = faceIndex;
shader.uniforms[ 'faceIndex' ].value = faceIndex; shader.uniforms[ 'faceIndex' ].value = faceIndex;
renderer.setRenderTarget( renderTarget ); renderer.setRenderTarget( renderTarget, faceIndex );
renderer.clear(); renderer.clear();
renderer.render( scene, camera ); renderer.render( scene, camera );
......
...@@ -65,26 +65,24 @@ function CubeCamera( near, far, cubeResolution, options ) { ...@@ -65,26 +65,24 @@ function CubeCamera( near, far, cubeResolution, options ) {
renderTarget.texture.generateMipmaps = false; renderTarget.texture.generateMipmaps = false;
renderTarget.activeCubeFace = 0; renderer.setRenderTarget( renderTarget, 0 );
renderer.setRenderTarget( renderTarget );
renderer.render( scene, cameraPX ); renderer.render( scene, cameraPX );
renderTarget.activeCubeFace = 1; renderer.setRenderTarget( renderTarget, 1 );
renderer.render( scene, cameraNX ); renderer.render( scene, cameraNX );
renderTarget.activeCubeFace = 2; renderer.setRenderTarget( renderTarget, 2 );
renderer.render( scene, cameraPY ); renderer.render( scene, cameraPY );
renderTarget.activeCubeFace = 3; renderer.setRenderTarget( renderTarget, 3 );
renderer.render( scene, cameraNY ); renderer.render( scene, cameraNY );
renderTarget.activeCubeFace = 4; renderer.setRenderTarget( renderTarget, 4 );
renderer.render( scene, cameraPZ ); renderer.render( scene, cameraPZ );
renderTarget.texture.generateMipmaps = generateMipmaps; renderTarget.texture.generateMipmaps = generateMipmaps;
renderTarget.activeCubeFace = 5; renderer.setRenderTarget( renderTarget, 5 );
renderer.render( scene, cameraNZ ); renderer.render( scene, cameraNZ );
renderer.setRenderTarget( currentRenderTarget ); renderer.setRenderTarget( currentRenderTarget );
......
...@@ -10,6 +10,4 @@ export class WebGLRenderTargetCube extends WebGLRenderTarget { ...@@ -10,6 +10,4 @@ export class WebGLRenderTargetCube extends WebGLRenderTarget {
options?: WebGLRenderTargetOptions options?: WebGLRenderTargetOptions
); );
activeCubeFace: number; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5
activeMipMapLevel: number;
} }
...@@ -8,9 +8,6 @@ function WebGLRenderTargetCube( width, height, options ) { ...@@ -8,9 +8,6 @@ function WebGLRenderTargetCube( width, height, options ) {
WebGLRenderTarget.call( this, width, height, options ); WebGLRenderTarget.call( this, width, height, options );
this.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5
this.activeMipMapLevel = 0;
} }
WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );
......
...@@ -321,13 +321,13 @@ export class WebGLRenderer implements Renderer { ...@@ -321,13 +321,13 @@ export class WebGLRenderer implements Renderer {
/** /**
* Render a scene using a camera. * Render a scene using a camera.
* The render is done to a previously specified {@link WebGLRenderTarget#renderTarget .renderTarget} set by calling * The render is done to a previously specified {@link WebGLRenderTarget#renderTarget .renderTarget} set by calling
* {@link WebGLRenderer#setRenderTarget .setRenderTarget} or to the canvas as usual. * {@link WebGLRenderer#setRenderTarget .setRenderTarget} or to the canvas as usual.
* *
* By default render buffers are cleared before rendering but you can prevent this by setting the property * By default render buffers are cleared before rendering but you can prevent this by setting the property
* {@link WebGLRenderer#autoClear autoClear} to false. If you want to prevent only certain buffers being cleared * {@link WebGLRenderer#autoClear autoClear} to false. If you want to prevent only certain buffers being cleared
* you can set either the {@link WebGLRenderer#autoClearColor autoClearColor}, * you can set either the {@link WebGLRenderer#autoClearColor autoClearColor},
* {@link WebGLRenderer#autoClearStencil autoClearStencil} or {@link WebGLRenderer#autoClearDepth autoClearDepth} * {@link WebGLRenderer#autoClearStencil autoClearStencil} or {@link WebGLRenderer#autoClearDepth autoClearDepth}
* properties to false. To forcibly clear one ore more buffers call {@link WebGLRenderer#clear .clear}. * properties to false. To forcibly clear one ore more buffers call {@link WebGLRenderer#clear .clear}.
*/ */
render( render(
...@@ -346,7 +346,7 @@ export class WebGLRenderer implements Renderer { ...@@ -346,7 +346,7 @@ export class WebGLRenderer implements Renderer {
* @deprecated Use {@link WebGLRenderer#getRenderTarget .getRenderTarget()} instead. * @deprecated Use {@link WebGLRenderer#getRenderTarget .getRenderTarget()} instead.
*/ */
getCurrentRenderTarget(): RenderTarget; getCurrentRenderTarget(): RenderTarget;
setRenderTarget(renderTarget?: RenderTarget): void; setRenderTarget(renderTarget?: RenderTarget, activeCubeFace?: number, activeMipMapLevel?: number): void;
readRenderTargetPixels( readRenderTargetPixels(
renderTarget: RenderTarget, renderTarget: RenderTarget,
x: number, x: number,
......
...@@ -2548,7 +2548,7 @@ function WebGLRenderer( parameters ) { ...@@ -2548,7 +2548,7 @@ function WebGLRenderer( parameters ) {
}; };
this.setRenderTarget = function ( renderTarget ) { this.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) {
_currentRenderTarget = renderTarget; _currentRenderTarget = renderTarget;
...@@ -2567,7 +2567,7 @@ function WebGLRenderer( parameters ) { ...@@ -2567,7 +2567,7 @@ function WebGLRenderer( parameters ) {
if ( renderTarget.isWebGLRenderTargetCube ) { if ( renderTarget.isWebGLRenderTargetCube ) {
framebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ]; framebuffer = __webglFramebuffer[ activeCubeFace || 0 ];
isCube = true; isCube = true;
} else if ( renderTarget.isWebGLMultisampleRenderTarget ) { } else if ( renderTarget.isWebGLMultisampleRenderTarget ) {
...@@ -2606,7 +2606,7 @@ function WebGLRenderer( parameters ) { ...@@ -2606,7 +2606,7 @@ function WebGLRenderer( parameters ) {
if ( isCube ) { if ( isCube ) {
var textureProperties = properties.get( renderTarget.texture ); var textureProperties = properties.get( renderTarget.texture );
_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel ); _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace || 0, textureProperties.__webglTexture, activeMipMapLevel || 0 );
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册