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

WebGLRenderer: Add activeCubeFace/activeMipMapLevel to setRenderTarget()

上级 8e4a57b0
......@@ -50,12 +50,6 @@
<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>
......
......@@ -434,9 +434,11 @@
<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>
<h3>[method:null setRenderTarget]( [param:WebGLRenderTarget renderTarget] )</h3>
<h3>[method:null setRenderTarget]( [param:WebGLRenderTarget renderTarget], [param:Integer activeCubeFace], [param:Integer activeMipMapLevel] )</h3>
<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.
</p>
......
......@@ -47,11 +47,6 @@
<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>
......
......@@ -387,9 +387,11 @@
<h3>[method:null setPixelRatio]( [param:number value] )</h3>
<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>
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
</p>
......
......@@ -162,15 +162,13 @@ THREE.EquirectangularToCubeGenerator = ( function () {
for ( var i = 0; i < 6; i ++ ) {
this.renderTarget.activeCubeFace = 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 );
renderer.setRenderTarget( this.renderTarget, i );
renderer.clear();
renderer.render( scene, camera );
......
......@@ -135,9 +135,8 @@ THREE.PMREMGenerator = ( function () {
renderToCubeMapTargetFace: function ( renderer, renderTarget, faceIndex ) {
renderTarget.activeCubeFace = faceIndex;
shader.uniforms[ 'faceIndex' ].value = faceIndex;
renderer.setRenderTarget( renderTarget );
renderer.setRenderTarget( renderTarget, faceIndex );
renderer.clear();
renderer.render( scene, camera );
......
......@@ -65,26 +65,24 @@ function CubeCamera( near, far, cubeResolution, options ) {
renderTarget.texture.generateMipmaps = false;
renderTarget.activeCubeFace = 0;
renderer.setRenderTarget( renderTarget );
renderer.setRenderTarget( renderTarget, 0 );
renderer.render( scene, cameraPX );
renderTarget.activeCubeFace = 1;
renderer.setRenderTarget( renderTarget, 1 );
renderer.render( scene, cameraNX );
renderTarget.activeCubeFace = 2;
renderer.setRenderTarget( renderTarget, 2 );
renderer.render( scene, cameraPY );
renderTarget.activeCubeFace = 3;
renderer.setRenderTarget( renderTarget, 3 );
renderer.render( scene, cameraNY );
renderTarget.activeCubeFace = 4;
renderer.setRenderTarget( renderTarget, 4 );
renderer.render( scene, cameraPZ );
renderTarget.texture.generateMipmaps = generateMipmaps;
renderTarget.activeCubeFace = 5;
renderer.setRenderTarget( renderTarget, 5 );
renderer.render( scene, cameraNZ );
renderer.setRenderTarget( currentRenderTarget );
......
......@@ -10,6 +10,4 @@ export class WebGLRenderTargetCube extends WebGLRenderTarget {
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 ) {
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 );
......
......@@ -321,13 +321,13 @@ export class WebGLRenderer implements Renderer {
/**
* 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.
*
* 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
* you can set either the {@link WebGLRenderer#autoClearColor autoClearColor},
* {@link WebGLRenderer#autoClearStencil autoClearStencil} or {@link WebGLRenderer#autoClearDepth autoClearDepth}
*
* 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
* you can set either the {@link WebGLRenderer#autoClearColor autoClearColor},
* {@link WebGLRenderer#autoClearStencil autoClearStencil} or {@link WebGLRenderer#autoClearDepth autoClearDepth}
* properties to false. To forcibly clear one ore more buffers call {@link WebGLRenderer#clear .clear}.
*/
render(
......@@ -346,7 +346,7 @@ export class WebGLRenderer implements Renderer {
* @deprecated Use {@link WebGLRenderer#getRenderTarget .getRenderTarget()} instead.
*/
getCurrentRenderTarget(): RenderTarget;
setRenderTarget(renderTarget?: RenderTarget): void;
setRenderTarget(renderTarget?: RenderTarget, activeCubeFace?: number, activeMipMapLevel?: number): void;
readRenderTargetPixels(
renderTarget: RenderTarget,
x: number,
......
......@@ -2548,7 +2548,7 @@ function WebGLRenderer( parameters ) {
};
this.setRenderTarget = function ( renderTarget ) {
this.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) {
_currentRenderTarget = renderTarget;
......@@ -2567,7 +2567,7 @@ function WebGLRenderer( parameters ) {
if ( renderTarget.isWebGLRenderTargetCube ) {
framebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ];
framebuffer = __webglFramebuffer[ activeCubeFace || 0 ];
isCube = true;
} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {
......@@ -2606,7 +2606,7 @@ function WebGLRenderer( parameters ) {
if ( isCube ) {
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.
先完成此消息的编辑!
想要评论请 注册