@@ -7,136 +7,138 @@ import { WebGLRenderTarget } from './WebGLRenderTarget.js';
77import { CubeCamera } from '../cameras/CubeCamera.js' ;
88import { CubeTexture } from '../textures/CubeTexture.js' ;
99
10- function WebGLCubeRenderTarget ( size , options , dummy ) {
10+ class WebGLCubeRenderTarget extends WebGLRenderTarget {
1111
12- if ( Number . isInteger ( options ) ) {
12+ constructor ( size , options , dummy ) {
1313
14- console . warn ( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' ) ;
14+ if ( Number . isInteger ( options ) ) {
1515
16- options = dummy ;
16+ console . warn ( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' ) ;
1717
18- }
18+ options = dummy ;
1919
20- WebGLRenderTarget . call ( this , size , size , options ) ;
20+ }
2121
22- options = options || { } ;
22+ super ( size , size , options ) ;
2323
24- this . texture = new CubeTexture ( undefined , options . mapping , options . wrapS , options . wrapT , options . magFilter , options . minFilter , options . format , options . type , options . anisotropy , options . encoding ) ;
24+ Object . defineProperty ( this , 'isWebGLCubeRenderTarget' , { value : true } ) ;
2525
26- this . texture . _needsFlipEnvMap = false ;
26+ options = options || { } ;
2727
28- }
28+ this . texture = new CubeTexture ( undefined , options . mapping , options . wrapS , options . wrapT , options . magFilter , options . minFilter , options . format , options . type , options . anisotropy , options . encoding ) ;
2929
30- WebGLCubeRenderTarget . prototype = Object . create ( WebGLRenderTarget . prototype ) ;
31- WebGLCubeRenderTarget . prototype . constructor = WebGLCubeRenderTarget ;
30+ this . texture . _needsFlipEnvMap = false ;
3231
33- WebGLCubeRenderTarget . prototype . isWebGLCubeRenderTarget = true ;
32+ }
3433
35- WebGLCubeRenderTarget . prototype . fromEquirectangularTexture = function ( renderer , texture ) {
34+ fromEquirectangularTexture ( renderer , texture ) {
3635
37- this . texture . type = texture . type ;
38- this . texture . format = RGBAFormat ; // see #18859
39- this . texture . encoding = texture . encoding ;
36+ this . texture . type = texture . type ;
37+ this . texture . format = RGBAFormat ; // see #18859
38+ this . texture . encoding = texture . encoding ;
4039
41- this . texture . generateMipmaps = texture . generateMipmaps ;
42- this . texture . minFilter = texture . minFilter ;
43- this . texture . magFilter = texture . magFilter ;
40+ this . texture . generateMipmaps = texture . generateMipmaps ;
41+ this . texture . minFilter = texture . minFilter ;
42+ this . texture . magFilter = texture . magFilter ;
4443
45- const shader = {
44+ const shader = {
4645
47- uniforms : {
48- tEquirect : { value : null } ,
49- } ,
46+ uniforms : {
47+ tEquirect : { value : null } ,
48+ } ,
5049
51- vertexShader : /* glsl */ `
50+ vertexShader : /* glsl */ `
5251
53- varying vec3 vWorldDirection;
52+ varying vec3 vWorldDirection;
5453
55- vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
54+ vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
5655
57- return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
56+ return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
5857
59- }
58+ }
6059
61- void main() {
60+ void main() {
6261
63- vWorldDirection = transformDirection( position, modelMatrix );
62+ vWorldDirection = transformDirection( position, modelMatrix );
6463
65- #include <begin_vertex>
66- #include <project_vertex>
64+ #include <begin_vertex>
65+ #include <project_vertex>
6766
68- }
69- ` ,
67+ }
68+ ` ,
7069
71- fragmentShader : /* glsl */ `
70+ fragmentShader : /* glsl */ `
7271
73- uniform sampler2D tEquirect;
72+ uniform sampler2D tEquirect;
7473
75- varying vec3 vWorldDirection;
74+ varying vec3 vWorldDirection;
7675
77- #include <common>
76+ #include <common>
7877
79- void main() {
78+ void main() {
8079
81- vec3 direction = normalize( vWorldDirection );
80+ vec3 direction = normalize( vWorldDirection );
8281
83- vec2 sampleUV = equirectUv( direction );
82+ vec2 sampleUV = equirectUv( direction );
8483
85- gl_FragColor = texture2D( tEquirect, sampleUV );
84+ gl_FragColor = texture2D( tEquirect, sampleUV );
8685
87- }
88- `
89- } ;
86+ }
87+ `
88+ } ;
9089
91- const geometry = new BoxGeometry ( 5 , 5 , 5 ) ;
90+ const geometry = new BoxGeometry ( 5 , 5 , 5 ) ;
9291
93- const material = new ShaderMaterial ( {
92+ const material = new ShaderMaterial ( {
9493
95- name : 'CubemapFromEquirect' ,
94+ name : 'CubemapFromEquirect' ,
9695
97- uniforms : cloneUniforms ( shader . uniforms ) ,
98- vertexShader : shader . vertexShader ,
99- fragmentShader : shader . fragmentShader ,
100- side : BackSide ,
101- blending : NoBlending
96+ uniforms : cloneUniforms ( shader . uniforms ) ,
97+ vertexShader : shader . vertexShader ,
98+ fragmentShader : shader . fragmentShader ,
99+ side : BackSide ,
100+ blending : NoBlending
102101
103- } ) ;
102+ } ) ;
104103
105- material . uniforms . tEquirect . value = texture ;
104+ material . uniforms . tEquirect . value = texture ;
106105
107- const mesh = new Mesh ( geometry , material ) ;
106+ const mesh = new Mesh ( geometry , material ) ;
108107
109- const currentMinFilter = texture . minFilter ;
108+ const currentMinFilter = texture . minFilter ;
110109
111- // Avoid blurred poles
112- if ( texture . minFilter === LinearMipmapLinearFilter ) texture . minFilter = LinearFilter ;
110+ // Avoid blurred poles
111+ if ( texture . minFilter === LinearMipmapLinearFilter ) texture . minFilter = LinearFilter ;
113112
114- const camera = new CubeCamera ( 1 , 10 , this ) ;
115- camera . update ( renderer , mesh ) ;
113+ const camera = new CubeCamera ( 1 , 10 , this ) ;
114+ camera . update ( renderer , mesh ) ;
116115
117- texture . minFilter = currentMinFilter ;
116+ texture . minFilter = currentMinFilter ;
118117
119- mesh . geometry . dispose ( ) ;
120- mesh . material . dispose ( ) ;
118+ mesh . geometry . dispose ( ) ;
119+ mesh . material . dispose ( ) ;
121120
122- return this ;
121+ return this ;
123122
124- } ;
123+ }
125124
126- WebGLCubeRenderTarget . prototype . clear = function ( renderer , color , depth , stencil ) {
125+ clear ( renderer , color , depth , stencil ) {
127126
128- const currentRenderTarget = renderer . getRenderTarget ( ) ;
127+ const currentRenderTarget = renderer . getRenderTarget ( ) ;
129128
130- for ( let i = 0 ; i < 6 ; i ++ ) {
129+ for ( let i = 0 ; i < 6 ; i ++ ) {
131130
132- renderer . setRenderTarget ( this , i ) ;
131+ renderer . setRenderTarget ( this , i ) ;
133132
134- renderer . clear ( color , depth , stencil ) ;
133+ renderer . clear ( color , depth , stencil ) ;
134+
135+ }
136+
137+ renderer . setRenderTarget ( currentRenderTarget ) ;
135138
136139 }
137140
138- renderer . setRenderTarget ( currentRenderTarget ) ;
141+ }
139142
140- } ;
141143
142144export { WebGLCubeRenderTarget } ;
0 commit comments