# OpenGL Pipeline State

Contents

- OpenGL Pipeline State

  - Vertex Input

  - Shader

  - Fixed Vertex Processing

  - Shader Bindings

  - Transform Feedback

  - Rasterizer

  - Depth/Stencil State

  - Framebuffer

  - Blending

  - Hints

class renderdoc.GLState

  The full current OpenGL pipeline state.

  atomicBuffers

    The currently bound atomic buffers.

    Type

      List[GLBuffer]

  computeShader

    The compute shader stage.

    Type

      GLShader

  depthState

    The depth state.

    Type

      GLDepthState

  fragmentShader

    The fragment shader stage.

    Type

      GLShader

  framebuffer

    The bound framebuffer.

    Type

      GLFrameBuffer

  geometryShader

    The geometry shader stage.

    Type

      GLShader

  hints

    The hint state.

    Type

      GLHints

  images

    The currently bound load/store images.

    Type

      List[GLImageLoadStore]

  pipelineResourceId

    The `ResourceId` of the program pipeline (if active).

  rasterizer

    The rasterization configuration.

    Type

      GLRasterizer

  samplers

    The currently bound samplers.

    > type

    >   List[GLSampler]

  shaderStorageBuffers

    The currently bound shader storage buffers.

    Type

      List[GLBuffer]

  stencilState

    The stencil state.

    Type

      GLStencilState

  tessControlShader

    The tessellation control shader stage.

    Type

      GLShader

  tessEvalShader

    The tessellation evaluation shader stage.

    Type

      GLShader

  textures

    The currently bound textures.

    Type

      List[GLTexture]

  transformFeedback

    The transform feedback stage.

    Type

      GLFeedback

  uniformBuffers

    The currently bound uniform buffers.

    Type

      List[GLBuffer]

  vertexInput

    The vertex input stage.

    Type

      GLVertexInput

  vertexProcessing

    The fixed-function vertex processing stage.

    Type

      GLFixedVertexProcessing

  vertexShader

    The vertex shader stage.

    Type

      GLShader

## Vertex Input

class renderdoc.GLVertexInput

  Describes the setup for fixed-function vertex input fetch.

  attributes

    The vertex attributes.

    Type

      List[GLVertexAttribute]

  indexBuffer

    The `ResourceId` of the index buffer.

  indexByteStride

    The byte width of the index buffer - typically 1, 2 or 4 bytes. It can be 0 for non-indexed draws.

    Note

    This does not correspond to a real GL state since the index type is specified per-action in the call itself. This is an implicit state derived from the last (or current) action at any given event.

  primitiveRestart

    `True` if primitive restart is enabled for strip primitives.

  provokingVertexLast

    `True` if the provoking vertex is the last one in the primitive.

    `False` if the provoking vertex is the first one.

  restartIndex

    The index value to use to indicate a strip restart.

  topology

    The byte width of the index buffer - typically 1, 2 or 4 bytes.

    Note

    This does not correspond to a real GL state since the topology is specified per-action in the call itself. This is an implicit state derived from the last (or current) action at any given event.

  vertexArrayObject

    The `ResourceId` of the vertex array object that’s bound.

  vertexBuffers

    The vertex buffers.

    Type

      List[GLVertexBuffer]

class renderdoc.GLVertexAttribute

  Describes the configuration for a single vertex attribute.

  Note

  If old-style vertex attrib pointer setup was used for the vertex attributes then it will be decomposed into 1:1 attributes and buffers.

  byteOffset

    The byte offset from the start of the vertex data in the vertex buffer from `vertexBufferSlot`.

  enabled

    `True` if this vertex attribute is enabled.

  floatCast

    Only valid for integer formatted attributes, `True` if they are cast to float.

    This is because they were specified with an integer format but glVertexAttribFormat (not glVertexAttribIFormat) so they will be cast.

  format

    The format describing how the vertex attribute is interpreted.

    Type

      ResourceFormat

  genericValue

    The generic value of the vertex attribute if no buffer is bound.

    Type

      PixelValue

  vertexBufferSlot

    The vertex buffer input slot where the data is sourced from.

class renderdoc.GLVertexBuffer

  Describes a single OpenGL vertex buffer binding.

  byteOffset

    The byte offset from the start of the buffer to the beginning of the vertex data.

  byteStride

    The byte stride between the start of one set of vertex data and the next.

  instanceDivisor

    The instance rate divisor.

    If this is `0` then the vertex buffer is read at vertex rate.

    If it’s `1` then one element is read for each instance, and for `N` greater than `1` then `N` instances read the same element before advancing.

  resourceId

    The `ResourceId` of the buffer bound to this slot.

## Shader

class renderdoc.GLShader

  Describes an OpenGL shader stage.

  bindpointMapping

    The bindpoint mapping data to match `reflection`.

    Type

      ShaderBindpointMapping

  programResourceId

    The `ResourceId` of the program bound to this stage.

  reflection

    The reflection data for this shader.

    Type

      ShaderReflection

  shaderResourceId

    The `ResourceId` of the shader object itself.

  stage

    A `ShaderStage` identifying which stage this shader is bound to.

  subroutines

    A list of integers with the subroutine values.

    Type

      List[int]

## Fixed Vertex Processing

class renderdoc.GLFixedVertexProcessing

  Describes the setup for fixed vertex processing operations.

  clipNegativeOneToOne

    `True` if the clip-space Z goes from `-1` to `1`.

    `False` if the clip-space Z goes from `0` to `1`.

  clipOriginLowerLeft

    `True` if the clipping origin should be in the lower left.

    `False` if it’s in the upper left.

  clipPlanes

    An 8-tuple of `bool` determining which user clipping planes are enabled.

    Type

      Tuple[bool,…]

  defaultInnerLevel

    A tuple of `float` giving the default inner level of tessellation.

    Type

      Tuple[float,float]

  defaultOuterLevel

    A tuple of `float` giving the default outer level of tessellation.

    Type

      Tuple[float,float,float,float]

  discard

    `True` if primitives should be discarded during rasterization.

## Shader Bindings

class renderdoc.GLTexture

  Describes the details of a texture.

  completeStatus

    The details of the texture’s (in)completeness. If this string is empty, the texture is complete. Otherwise it contains an explanation of why the texture is believed to be incomplete.

  depthReadChannel

    The channel to read from in a depth-stencil texture.

    `-1` for non depth-stencil textures.

    `0` if depth should be read.

    `1` if stencil should be read.

  firstMip

    Valid for textures - the first mip that is available.

  numMips

    Valid for textures - the number of mips that are available.

  resourceId

    The `ResourceId` of the underlying resource the view refers to.

  swizzle

    The swizzle applied to a texture.

    Type

      TextureSwizzle4

  type

    The `TextureType` of the texture.

  typeConflict

    The details of any type conflict on this binding. This can happen if multiple uniforms are pointing to the same binding but with different types. In this case it is impossible to disambiguate which binding was used.

    If this string is empty, no conflict is present. Otherwise it contains the bindings which are in conflict and their types.

class renderdoc.GLSampler

  Describes the sampler properties of a texture.

  UseBorder()

    Check if the border color is used in this OpenGL sampler.

    Returns

      `True` if the border color is used, `False` otherwise.

    Return type

      bool

  addressR

    The `AddressMode` in the R direction.

  addressS

    The `AddressMode` in the S direction.

  addressT

    The `AddressMode` in the T direction.

  borderColor

    The RGBA border color.

    Type

      Tuple[float,float,float,float]

  compareFunction

    The `CompareFunction` for comparison samplers.

  filter

    The filtering mode.

    Type

      TextureFilter

  maxAnisotropy

    The maximum anisotropic filtering level to use.

  maxLOD

    The maximum mip level that can be used.

  minLOD

    The minimum mip level that can be used.

  mipLODBias

    A bias to apply to the calculated mip level before sampling.

  resourceId

    The `ResourceId` of the sampler object, if a separate one is set.

  seamlessCubeMap

    `True` if seamless cubemap filtering is enabled for this texture.

class renderdoc.GLBuffer

  Describes the properties of a buffer.

  byteOffset

    The byte offset from the start of the buffer.

  byteSize

    The byte size of the buffer.

  resourceId

    The `ResourceId` of the buffer object.

class renderdoc.GLImageLoadStore

  Describes the properties of a load/store image.

  imageFormat

    The format that the image is bound as.

    Type

      ResourceFormat

  layered

    `True` if multiple layers are bound together to the image. `False` if only one layer is bound.

  mipLevel

    The mip of the texture that’s used in the attachment.

  readAllowed

    `True` if loading from the image is allowed.

  resourceId

    The `ResourceId` of the texture object.

  slice

    The slice of the texture that’s used in the attachment.

  type

    The `TextureType` of the texture.

  writeAllowed

    `True` if storing to the image is allowed.

## Transform Feedback

class renderdoc.GLFeedback

  Describes the current feedback state.

  active

    `True` if the transform feedback object is currently active.

  bufferResourceId

    The buffer bindings.

    Type

      Tuple[ResourceId,ResourceId,ResourceId,ResourceId]

  byteOffset

    The buffer byte offsets.

    Type

      Tuple[int,int,int,int]

  byteSize

    The buffer byte sizes.

    Type

      Tuple[int,int,int,int]

  feedbackResourceId

    The `ResourceId` of the transform feedback binding.

  paused

    `True` if the transform feedback object is currently paused.

## Rasterizer

class renderdoc.GLRasterizer

  Describes the rasterization state of the OpenGL pipeline.

  scissors

    The bound scissor regions.

    Type

      List[Scissor]

  state

    The details of the rasterization state.

    Type

      GLRasterizerState

  viewports

    The bound viewports.

    Type

      List[Viewport]

class renderdoc.GLRasterizerState

  Describes the rasterizer state toggles.

  alphaToCoverage

    `True` if alpha-to-coverage should be used when blending to an MSAA target.

  alphaToOne

    `True` if alpha-to-one should be used when blending to an MSAA target.

  cullMode

    The polygon `CullMode`.

  depthBias

    The fixed depth bias value to apply to z-values.

  depthClamp

    `True` if pixels outside of the near and far depth planes should be clamped and to `0.0` to `1.0` and not clipped.

  fillMode

    The polygon `FillMode`.

  frontCCW

    `True` if counter-clockwise polygons are front-facing. `False` if clockwise polygons are front-facing.

  lineWidth

    The fixed line width in pixels.

  minSampleShadingRate

    The minimum sample shading rate.

  multisampleEnable

    `True` if multisampling should be used during rendering.

  offsetClamp

    The clamp value for calculated depth bias from `depthBias` and `slopeScaledDepthBias`

  pointFadeThreshold

    The threshold value at which points are clipped if they exceed this size.

  pointOriginUpperLeft

    `True` if the point sprite texture origin is upper-left. `False` if lower-left.

  pointSize

    The fixed point size in pixels.

  programmablePointSize

    `True` if the point size can be programmably exported from a shader.

  sampleCoverage

    `True` if a temporary mask using `sampleCoverageValue` should be used to resolve the final output color.

  sampleCoverageInvert

    `True` if the temporary sample coverage mask should be inverted.

  sampleCoverageValue

    The sample coverage value used if `sampleCoverage` is `True`.

  sampleMask

    `True` if the generated samples should be bitwise `AND` masked with `sampleMaskValue`.

  sampleMaskValue

    The sample mask value that should be masked against the generated coverage.

  sampleShading

    `True` if rendering should happen at sample-rate frequency.

  slopeScaledDepthBias

    The slope-scaled depth bias value to apply to z-values.

## Depth/Stencil State

class renderdoc.GLDepthState

  Describes the depth state.

  depthBounds

    `True` if depth bounds tests should be applied.

  depthEnable

    `True` if depth testing should be performed.

  depthFunction

    The `CompareFunction` to use for testing depth values.

  depthWrites

    `True` if depth values should be written to the depth target.

  farBound

    The far plane bounding value.

  nearBound

    The near plane bounding value.

class renderdoc.GLStencilState

  Describes the stencil state.

  backFace

    The stencil state for back-facing polygons.

    Type

      StencilFace

  frontFace

    The stencil state for front-facing polygons.

    Type

      StencilFace

  stencilEnable

    `True` if stencil operations should be performed.

## Framebuffer

class renderdoc.GLFrameBuffer

  Describes the current state of the framebuffer stage of the pipeline.

  blendState

    The details of the blending state.

    Type

      GLBlendState

  dither

    `True` if dithering should be used when writing to color buffers.

  drawFBO

    The draw framebuffer.

    Type

      GLFBO

  framebufferSRGB

    `True` if sRGB correction should be applied when writing to an sRGB-formatted texture.

  readFBO

    The read framebuffer.

    Type

      GLFBO

class renderdoc.GLFBO

  Describes the contents of a framebuffer object.

  colorAttachments

    The framebuffer color attachments.

    Type

      List[GLAttachment]

  depthAttachment

    The framebuffer depth attachment.

    Type

      GLAttachment

  drawBuffers

    The draw buffer indices into the `colorAttachments` attachment list.

    Type

      List[int]

  readBuffer

    The read buffer index in the `colorAttachments` attachment list.

  resourceId

    The `ResourceId` of the framebuffer.

  stencilAttachment

    The framebuffer stencil attachment.

    Type

      GLAttachment

class renderdoc.GLAttachment

  Describes the state of a framebuffer attachment.

  mipLevel

    The mip of the texture that’s used in the attachment.

  numSlices

    The number of slices of the texture that are used in the attachment.

  resourceId

    The `ResourceId` of the texture bound to this attachment.

  slice

    The slice of the texture that’s used in the attachment.

  swizzle

    The swizzle applied to the texture.

    Type

      TextureSwizzle4

## Blending

class renderdoc.GLBlendState

  Describes the blend pipeline state.

  blendFactor

    The constant blend factor to use in blend equations.

    Type

      Tuple[float,float,float,float]

  blends

    The blend operations for each target.

    Type

      List[ColorBlend]

## Hints

class renderdoc.GLHints

  Describes the current state of GL hints and smoothing.

  derivatives

    A `QualityHint` with the derivatives hint.

  lineSmoothing

    A `QualityHint` with the line smoothing hint.

  lineSmoothingEnabled

    `True` if line smoothing is enabled.

  polySmoothing

    A `QualityHint` with the polygon smoothing hint.

  polySmoothingEnabled

    `True` if polygon smoothing is enabled.

  textureCompression

    A `QualityHint` with the texture compression hint.

class renderdoc.QualityHint(value)

  An API specific hint for a certain behaviour. A legacy concept in OpenGL that controls hints to the implementation where there is room for interpretation within the range of valid behaviour.

  DontCare

    The hinted behaviour can follow any valid path as the implementation decides.

  Nicest

    The hinted behaviour should follow the most correct or highest quality path.

  Fastest

    The hinted behaviour should follow the most efficient path.