Skip to content

Commit 2bb512d

Browse files
committed
WebGLTextures: Fix floating point textures with WebGL 2
1 parent f62b2a8 commit 2bb512d

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

src/renderers/webgl/WebGLTextures.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,31 +104,44 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
104104

105105
if ( ! capabilities.isWebGL2 ) return glFormat;
106106

107+
var internalFormat = glFormat;
108+
107109
if ( glFormat === _gl.RED ) {
108110

109-
if ( glType === _gl.FLOAT ) return _gl.R32F;
110-
if ( glType === _gl.HALF_FLOAT ) return _gl.R16F;
111-
if ( glType === _gl.UNSIGNED_BYTE ) return _gl.R8;
111+
if ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;
112+
if ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;
113+
if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;
112114

113115
}
114116

115117
if ( glFormat === _gl.RGB ) {
116118

117-
if ( glType === _gl.FLOAT ) return _gl.RGB32F;
118-
if ( glType === _gl.HALF_FLOAT ) return _gl.RGB16F;
119-
if ( glType === _gl.UNSIGNED_BYTE ) return _gl.RGB8;
119+
if ( glType === _gl.FLOAT ) internalFormat = _gl.RGB32F;
120+
if ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGB16F;
121+
if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGB8;
120122

121123
}
122124

123125
if ( glFormat === _gl.RGBA ) {
124126

125-
if ( glType === _gl.FLOAT ) return _gl.RGBA32F;
126-
if ( glType === _gl.HALF_FLOAT ) return _gl.RGBA16F;
127-
if ( glType === _gl.UNSIGNED_BYTE ) return _gl.RGBA8;
127+
if ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;
128+
if ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;
129+
if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGBA8;
130+
131+
}
132+
133+
if ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||
134+
internalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {
135+
136+
extensions.get( 'EXT_color_buffer_float' );
137+
138+
} else if ( internalFormat === _gl.RGB16F || internalFormat === _gl.RGB32F ) {
139+
140+
console.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' );
128141

129142
}
130143

131-
return glFormat;
144+
return internalFormat;
132145

133146
}
134147

0 commit comments

Comments
 (0)