|
@@ -13160,35 +13160,6 @@ var BABYLON;
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
- Engine.prototype._getInternalFormat = function (format) {
|
|
|
- var internalFormat = this._gl.RGBA;
|
|
|
- switch (format) {
|
|
|
- case Engine.TEXTUREFORMAT_ALPHA:
|
|
|
- internalFormat = this._gl.ALPHA;
|
|
|
- break;
|
|
|
- case Engine.TEXTUREFORMAT_LUMINANCE:
|
|
|
- internalFormat = this._gl.LUMINANCE;
|
|
|
- break;
|
|
|
- case Engine.TEXTUREFORMAT_LUMINANCE_ALPHA:
|
|
|
- internalFormat = this._gl.LUMINANCE_ALPHA;
|
|
|
- break;
|
|
|
- case Engine.TEXTUREFORMAT_RGB:
|
|
|
- case Engine.TEXTUREFORMAT_RGB32F:
|
|
|
- internalFormat = this._gl.RGB;
|
|
|
- break;
|
|
|
- case Engine.TEXTUREFORMAT_RGBA:
|
|
|
- case Engine.TEXTUREFORMAT_RGBA32F:
|
|
|
- internalFormat = this._gl.RGBA;
|
|
|
- break;
|
|
|
- case Engine.TEXTUREFORMAT_R32F:
|
|
|
- internalFormat = this._gl.RED;
|
|
|
- break;
|
|
|
- case Engine.TEXTUREFORMAT_RG32F:
|
|
|
- internalFormat = this._gl.RG;
|
|
|
- break;
|
|
|
- }
|
|
|
- return internalFormat;
|
|
|
- };
|
|
|
Engine.prototype.updateRawTexture = function (texture, data, format, invertY, compression, type) {
|
|
|
if (compression === void 0) { compression = null; }
|
|
|
if (type === void 0) { type = Engine.TEXTURETYPE_UNSIGNED_INT; }
|
|
@@ -13537,6 +13508,7 @@ var BABYLON;
|
|
|
fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && options.generateStencilBuffer;
|
|
|
fullOptions.type = options.type === undefined ? Engine.TEXTURETYPE_UNSIGNED_INT : options.type;
|
|
|
fullOptions.samplingMode = options.samplingMode === undefined ? BABYLON.Texture.TRILINEAR_SAMPLINGMODE : options.samplingMode;
|
|
|
+ fullOptions.format = options.format === undefined ? Engine.TEXTUREFORMAT_RGBA : options.format;
|
|
|
}
|
|
|
else {
|
|
|
fullOptions.generateMipMaps = options;
|
|
@@ -13544,6 +13516,7 @@ var BABYLON;
|
|
|
fullOptions.generateStencilBuffer = false;
|
|
|
fullOptions.type = Engine.TEXTURETYPE_UNSIGNED_INT;
|
|
|
fullOptions.samplingMode = BABYLON.Texture.TRILINEAR_SAMPLINGMODE;
|
|
|
+ fullOptions.format = Engine.TEXTUREFORMAT_RGBA;
|
|
|
}
|
|
|
if (fullOptions.type === Engine.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {
|
|
|
// if floating point linear (gl.FLOAT) then force to NEAREST_SAMPLINGMODE
|
|
@@ -13567,7 +13540,7 @@ var BABYLON;
|
|
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filters.min);
|
|
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
|
- gl.texImage2D(gl.TEXTURE_2D, 0, this._getRGBABufferInternalSizedFormat(fullOptions.type), width, height, 0, gl.RGBA, this._getWebGLTextureType(fullOptions.type), null);
|
|
|
+ gl.texImage2D(gl.TEXTURE_2D, 0, this._getRGBABufferInternalSizedFormat(fullOptions.type, fullOptions.format), width, height, 0, this._getInternalFormat(fullOptions.format), this._getWebGLTextureType(fullOptions.type), null);
|
|
|
// Create the framebuffer
|
|
|
var framebuffer = gl.createFramebuffer();
|
|
|
this.bindUnboundFramebuffer(framebuffer);
|
|
@@ -13847,7 +13820,7 @@ var BABYLON;
|
|
|
this._gl.compressedTexImage2D(target, lod, internalFormat, width, height, 0, data);
|
|
|
};
|
|
|
Engine.prototype.createRenderTargetCubeTexture = function (size, options) {
|
|
|
- var fullOptions = __assign({ generateMipMaps: true, generateDepthBuffer: true, generateStencilBuffer: false, type: Engine.TEXTURETYPE_UNSIGNED_INT, samplingMode: BABYLON.Texture.TRILINEAR_SAMPLINGMODE }, options);
|
|
|
+ var fullOptions = __assign({ generateMipMaps: true, generateDepthBuffer: true, generateStencilBuffer: false, type: Engine.TEXTURETYPE_UNSIGNED_INT, samplingMode: BABYLON.Texture.TRILINEAR_SAMPLINGMODE, format: Engine.TEXTUREFORMAT_RGBA }, options);
|
|
|
fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && fullOptions.generateStencilBuffer;
|
|
|
if (fullOptions.type === Engine.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {
|
|
|
// if floating point linear (gl.FLOAT) then force to NEAREST_SAMPLINGMODE
|
|
@@ -13870,7 +13843,7 @@ var BABYLON;
|
|
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
|
gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
|
for (var face = 0; face < 6; face++) {
|
|
|
- gl.texImage2D((gl.TEXTURE_CUBE_MAP_POSITIVE_X + face), 0, this._getRGBABufferInternalSizedFormat(fullOptions.type), size, size, 0, gl.RGBA, this._getWebGLTextureType(fullOptions.type), null);
|
|
|
+ gl.texImage2D((gl.TEXTURE_CUBE_MAP_POSITIVE_X + face), 0, this._getRGBABufferInternalSizedFormat(fullOptions.type, fullOptions.format), size, size, 0, this._getInternalFormat(fullOptions.format), this._getWebGLTextureType(fullOptions.type), null);
|
|
|
}
|
|
|
// Create the framebuffer
|
|
|
var framebuffer = gl.createFramebuffer();
|
|
@@ -15123,9 +15096,44 @@ var BABYLON;
|
|
|
return this._gl.UNSIGNED_BYTE;
|
|
|
};
|
|
|
;
|
|
|
+ Engine.prototype._getInternalFormat = function (format) {
|
|
|
+ var internalFormat = this._gl.RGBA;
|
|
|
+ switch (format) {
|
|
|
+ case Engine.TEXTUREFORMAT_ALPHA:
|
|
|
+ internalFormat = this._gl.ALPHA;
|
|
|
+ break;
|
|
|
+ case Engine.TEXTUREFORMAT_LUMINANCE:
|
|
|
+ internalFormat = this._gl.LUMINANCE;
|
|
|
+ break;
|
|
|
+ case Engine.TEXTUREFORMAT_LUMINANCE_ALPHA:
|
|
|
+ internalFormat = this._gl.LUMINANCE_ALPHA;
|
|
|
+ break;
|
|
|
+ case Engine.TEXTUREFORMAT_RGB:
|
|
|
+ case Engine.TEXTUREFORMAT_RGB32F:
|
|
|
+ internalFormat = this._gl.RGB;
|
|
|
+ break;
|
|
|
+ case Engine.TEXTUREFORMAT_RGBA:
|
|
|
+ case Engine.TEXTUREFORMAT_RGBA32F:
|
|
|
+ internalFormat = this._gl.RGBA;
|
|
|
+ break;
|
|
|
+ case Engine.TEXTUREFORMAT_R32F:
|
|
|
+ internalFormat = this._gl.RED;
|
|
|
+ break;
|
|
|
+ case Engine.TEXTUREFORMAT_RG32F:
|
|
|
+ internalFormat = this._gl.RG;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return internalFormat;
|
|
|
+ };
|
|
|
/** @ignore */
|
|
|
Engine.prototype._getRGBABufferInternalSizedFormat = function (type, format) {
|
|
|
if (this._webGLVersion === 1) {
|
|
|
+ if (format) {
|
|
|
+ switch (format) {
|
|
|
+ case Engine.TEXTUREFORMAT_LUMINANCE:
|
|
|
+ return this._gl.LUMINANCE;
|
|
|
+ }
|
|
|
+ }
|
|
|
return this._gl.RGBA;
|
|
|
}
|
|
|
if (type === Engine.TEXTURETYPE_FLOAT) {
|
|
@@ -15144,6 +15152,12 @@ var BABYLON;
|
|
|
else if (type === Engine.TEXTURETYPE_HALF_FLOAT) {
|
|
|
return this._gl.RGBA16F;
|
|
|
}
|
|
|
+ if (format) {
|
|
|
+ switch (format) {
|
|
|
+ case Engine.TEXTUREFORMAT_LUMINANCE:
|
|
|
+ return this._gl.LUMINANCE;
|
|
|
+ }
|
|
|
+ }
|
|
|
return this._gl.RGBA;
|
|
|
};
|
|
|
;
|