getInternalFormat method

dynamic getInternalFormat(
  1. dynamic internalFormatName,
  2. int glFormat,
  3. int glType,
  4. int encoding, [
  5. bool isVideoTexture = false,
])

Implementation

getInternalFormat(internalFormatName, int glFormat, int glType, int encoding, [bool isVideoTexture = false]) {
  if (isWebGL2 == false) return glFormat;

  if (internalFormatName != null) {
    if ( WebGL.get(internalFormatName) != null ) return WebGL.get(internalFormatName);
    console.warning('WebGLRenderer: Attempt to use non-existing WebGL internal format $internalFormatName');
  }

  dynamic internalFormat = glFormat;

  if (glFormat == WebGL.RED) {
    if (glType == WebGL.FLOAT) internalFormat = WebGL.R32F;
    if (glType == WebGL.HALF_FLOAT) internalFormat = WebGL.R16F;
    if (glType == WebGL.UNSIGNED_BYTE) internalFormat = WebGL.R8;
  }

  if (glFormat == WebGL.RG) {
    if (glType == WebGL.FLOAT) internalFormat = WebGL.RG32F;
    if (glType == WebGL.HALF_FLOAT) internalFormat = WebGL.RG16F;
    if (glType == WebGL.UNSIGNED_BYTE) internalFormat = WebGL.RG8;
  }

  if (glFormat == WebGL.RGB) {
    if (glType == WebGL.FLOAT) internalFormat = WebGL.RGB32F;
    if (glType == WebGL.HALF_FLOAT) internalFormat = WebGL.RGB16F;
    if (glType == WebGL.UNSIGNED_BYTE) internalFormat = WebGL.RGB8;
  }

  if (glFormat == WebGL.RGBA) {
    if (glType == WebGL.FLOAT) internalFormat = WebGL.RGBA32F;
    if (glType == WebGL.HALF_FLOAT) internalFormat = WebGL.RGBA16F;
    if (glType == WebGL.UNSIGNED_BYTE) {
      internalFormat = (encoding == sRGBEncoding && isVideoTexture == false) ? WebGL.SRGB8_ALPHA8 : WebGL.RGBA8;
    }
    if (glType == WebGL.UNSIGNED_SHORT_4_4_4_4) internalFormat = WebGL.RGBA4;
    if (glType == WebGL.UNSIGNED_SHORT_5_5_5_1) internalFormat = WebGL.RGB5_A1;
  }

  if (internalFormat == WebGL.R16F ||
      internalFormat == WebGL.R32F ||
      internalFormat == WebGL.RG16F ||
      internalFormat == WebGL.RG32F ||
      internalFormat == WebGL.RGBA16F ||
      internalFormat == WebGL.RGBA32F) {
    extensions.get('EXT_color_buffer_float');
  }

  return internalFormat;
}