WebGLCubeRenderTarget constructor

WebGLCubeRenderTarget(
  1. int size, [
  2. WebGLRenderTargetOptions? options
])

Implementation

WebGLCubeRenderTarget(int size, [WebGLRenderTargetOptions? options]) : super(size, size, options) {
  isWebGLCubeRenderTarget = true;
  // By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)
  // in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,
  // in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.

  // three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped
  // and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture
  // as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).
  final image = ImageElement(width: size, height: size, depth: 1);
  final images = [image, image, image, image, image, image];

  options = options ?? WebGLRenderTargetOptions({});
  texture = CubeTexture(images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter,
      options.format, options.type, options.anisotropy, options.encoding);
  texture.isRenderTargetTexture = true;

  texture.generateMipmaps = options.generateMipmaps;
  texture.minFilter = options.minFilter ?? LinearFilter;
}