bindVertexStage method

  1. @override
void bindVertexStage(
  1. RenderPass pass,
  2. Shader vertexShader,
  3. TransientWriter transientsBuffer
)

Binds this material's vertex-stage uniforms to vertexShader, called by the encoder only when it used a material-supplied vertex shader (see materialVertexShader). The base implementation is a no-op; a material with vertex-stage parameters binds them here.

Implementation

@override
void bindVertexStage(
  gpu.RenderPass pass,
  gpu.Shader vertexShader,
  TransientWriter transientsBuffer,
) {
  for (final entry in _vertexUniformBlocks.entries) {
    final slot = vertexShader.getUniformSlot(entry.key);
    assert(_checkBlock(slot, entry.key, entry.value, ShaderStage.vertex));
    pass.bindUniform(slot, transientsBuffer.emplace(entry.value));
  }
  for (final entry in _vertexTextures.entries) {
    final resolved = _resolveShaderTexture(entry.value.source);
    pass.bindTexture(
      vertexShader.getUniformSlot(entry.key),
      Material.whitePlaceholder(resolved),
      sampler:
          entry.value.sampler ??
          _shaderTextureSampler(entry.value.source) ??
          gpu.SamplerOptions(),
    );
  }
}