Options
All
  • Public
  • Public/Protected
  • All
Menu

Class DebugPass

This rendering pass specialized the blit pass by enforcing program-based blitting with a custom debug program.

The debug pass can be used as follows:

this.blit.framebuffer = this.intermediateFBO;
this.blit.frame(this.defaultFBO, null, null);

This pass also provides some basic debugging facilities, such as blitting the input as linearized depth (packed or not packed) etc. An additional WebGL program will be initialized when a debug mode is specified for the first time. The default program blit remains untouched in order to keep it as minimal as possible.

Hierarchy

Index

Constructors

constructor

Properties

Protected _context

_context: Context

Read-only access to the objects context, used to get context information and WebGL API access.

Protected _debug

_debug: Mode = DebugPass.Mode.Depth
see

debug

Protected _drawBuffer

_drawBuffer: GLenum

Protected _dstBounds

_dstBounds: vec4 | undefined
see

dstBounds

Protected _enforceProgramBlit

_enforceProgramBlit: boolean = false
see

{@link forceProgramBlit}

Protected _far

_far: GLfloat = 0

Protected _filter

_filter: GLenum
see

filter

Protected _framebuffer

_framebuffer: Framebuffer

Protected _ndcTriangle

_ndcTriangle: NdcFillingTriangle

Geometry used to draw on. This is not provided by default to allow for geometry sharing. If no triangle is given, the ndc triangle will be created and managed internally.

Protected _ndcTriangleShared

_ndcTriangleShared: boolean = false

Tracks ownership of the ndc-filling triangle.

Protected _near

_near: GLfloat = 0

If provided, depth will be linearized when depth data is blitted.

Protected _program

_program: Program

Protected _readBuffer

_readBuffer: GLenum

Protected _srcBounds

_srcBounds: vec4 | undefined
see

srcBounds

Protected _target

_target: Framebuffer
see

target

Protected _uDebugMode

_uDebugMode: WebGLUniformLocation | undefined

Uniform for passing the debug mode to the specialized blit program.

Protected _uDstBounds

_uDstBounds: WebGLUniformLocation

Uniform for passing the destination bounds to blit.

Protected _uLinearize

_uLinearize: WebGLUniformLocation | undefined

Uniform used to pass near and far data to the specialized blit program for linearization.

Protected _uNearest

_uNearest: WebGLUniformLocation

Uniform for passing the filter to blit: true for nearest, false otherwise (linear).

Protected _uSrcBounds

_uSrcBounds: WebGLUniformLocation

Uniform for passing the source bounds to blit.

Accessors

debug

  • set debug(mode: Mode): void
  • Specify a debug mode for blitting @see {@link Blitpass.Debug}. If the debug mode is set to anything except Debug.None for the first time, a specialized debug program will be created, initialized, and used for blit.

    Parameters

    Returns void

drawBuffer

  • set drawBuffer(drawBuffer: GLenum): void
  • The draw buffer to blit to (currently, this is expected to refer to a texture attachment of this._target or gl.BACK). Please note that this will be ignored if WebGL 1 is used without a WEBGL_draw_buffer extension. Furthermore, if the drawBuffer is gl.BACK, a DefaultBuffer is expected as target.

    Parameters

    • drawBuffer: GLenum

      GLenum that specifies the draw buffer.

    Returns void

dstBounds

  • set dstBounds(bounds: vec4 | undefined): void
  • Specify the bounds of the destination rectangle within the write buffer of the write framebuffer.

    Parameters

    • bounds: vec4 | undefined

      [srcX0, srcY0, srcX1, srcY1] as used in glBlitFramebuffer. If bounds is undefined, the full size of the destination (target) buffer will be used.

    Returns void

enforceProgramBlit

  • set enforceProgramBlit(enforce: boolean): void
  • Specify whether or not experimental WebGL blit can be used if available.

    Parameters

    • enforce: boolean

      If true, program based blit instead of WebGL experimental blit function will be used.

    Returns void

far

  • set far(far: GLfloat | undefined): void
  • If linearized is enabled, depth buffer blitting will use this far value for linearization.

    Parameters

    • far: GLfloat | undefined

    Returns void

filter

  • set filter(filter: GLenum): void
  • Specifies the interpolation to be applied if the image is stretched. Must be GL_NEAREST or GL_LINEAR.

    Parameters

    • filter: GLenum

    Returns void

framebuffer

initialized

  • get initialized(): boolean

near

  • set near(near: GLfloat | undefined): void
  • If linearized is enabled, depth buffer blitting will use this near value for linearization.

    Parameters

    • near: GLfloat | undefined

    Returns void

readBuffer

  • set readBuffer(readBuffer: GLenum): void
  • The read buffer to blit from (currently, this is expected to refer to a texture attachment of this._framebuffer).

    Parameters

    • readBuffer: GLenum

      GLenum that is to be queried from the FBO.

    Returns void

srcBounds

  • set srcBounds(bounds: vec4 | undefined): void
  • Specify the bounds of the source rectangle within the read buffer of the read framebuffer.

    Parameters

    • bounds: vec4 | undefined

      [srcX0, srcY0, srcX1, srcY1] as used in glBlitFramebuffer. If bounds is undefined, the full size of the source buffer (framebuffer) will be used.

    Returns void

target

Methods

Protected assertInitialized

  • assertInitialized(): void
  • Asserts the objects initialization status to be true. Note that the implementation is cached and forwarded to either an empty function when initialized and to an acutal assert(false) otherwise.

    Returns void

Protected assertUninitialized

  • assertUninitialized(): undefined
  • Asserts the objects initialization status to be false. Note that the implementation is cached and forwarded to either an empty function when uninitialized and to an acutal assert(false) otherwise.

    Returns undefined

Protected createProgram

  • createProgram(): boolean
  • Used to create (on-demand) the blit program for program based blitting. This function can be specialized, e.g., for creating custom blit passes such as the DebugPass DebugPass. This method assumes the program to be undefined.

    Returns boolean

frame

  • frame(): void
  • A blit frame either blits or draws the color attachment of the given framebuffer to the target framebuffer. For program based/indirect blit a viewport filling area, i.e., a screen-aligned triangle is used.

    Returns void

initialize

uninitialize

  • uninitialize(): void
  • Specializes this pass's uninitialization. Program and geometry resources are released (if allocated). Cached uniform and attribute locations are invalidated.

    Returns void

Static Protected Readonly assertInitializedFalse

Static Protected Readonly assertUninitializedFalse

Static assert_initialized

Static assert_uninitialized

Static discard

  • Method decorator for discarding of Initializable inheritors. This decorator asserts the initialization status of the instance that is to be discarded, invokes its uninitialization, and falsifies the initialization status. In order to encourage the use of assertInitialized and assertUninitialized they are dynamically bound to a static, always-failing assert and an empty/undefined function respectively.

    Returns MethodDecorator

Static initialize

  • Method decorator for initialization of Initializable inheritors. This decorator asserts the initialization status of the instance that is to be initialized, invokes its initialization with arbitrary number of parameters, and sets the initialization status to the initialization success (either false or true). In order to encourage the use of assertInitialized and assertUninitialized they are dynamically bound to either a static, always-failing assert or an empty/undefined function.

    Returns MethodDecorator

Static uninitialize

  • Method decorator for uninitialization of Initializable inheritors. This decorator asserts the initialization status of the instance that is to be uninitialized, invokes its uninitialization, and falsifies the initialization status. In order to encourage the use of assertInitialized and assertUninitialized they are dynamically bound to a static, always-failing assert and an empty/undefined function respectively.

    Returns MethodDecorator