VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
visutwin::canvas::MetalComposePass Class Reference

#include <platform/graphics/metal/metalComposePass.h>

Public Member Functions

void ensureResources ()
void execute (MTL::RenderCommandEncoder *encoder, const ComposePassParams &params, MetalRenderPipeline *pipeline, const std::shared_ptr< RenderTarget > &renderTarget, const std::vector< std::shared_ptr< MetalBindGroupFormat > > &bindGroupFormats, MTL::SamplerState *defaultSampler)
 Execute the compose pass on the active render command encoder.
 MetalComposePass (MetalGraphicsDevice *device)
std::shared_ptr< VertexBuffervertexBuffer () const
 Shared vertex buffer (3-vertex full-screen triangle).
std::shared_ptr< VertexFormatvertexFormat () const
 Shared vertex format (full-screen triangle, 14 floats per vertex).
 ~MetalComposePass ()

Detailed Description

Manages the full-screen compose pass: lazy resource creation, pipeline lookup, and dispatch. Owns the compose shader source, vertex buffer (shared with MetalTaaPass), blend/depth states.

Definition at line 31 of file metalComposePass.h.

Constructor & Destructor Documentation

◆ MetalComposePass()

visutwin::canvas::MetalComposePass::MetalComposePass ( MetalGraphicsDevice * device)
explicit

Definition at line 270 of file metalComposePass.cpp.

◆ ~MetalComposePass()

visutwin::canvas::MetalComposePass::~MetalComposePass ( )

Definition at line 275 of file metalComposePass.cpp.

Member Function Documentation

◆ ensureResources()

void visutwin::canvas::MetalComposePass::ensureResources ( )

Initialize shared resources (vertex buffer, format, etc.) if not already done. Called by dependent passes (SSAO, blur) that share the vertex buffer/format.

Definition at line 283 of file metalComposePass.cpp.

References visutwin::canvas::BUFFER_STATIC, visutwin::canvas::createShader(), visutwin::canvas::VertexBufferOptions::data, visutwin::canvas::ShaderDefinition::fshader, visutwin::canvas::ShaderDefinition::name, visutwin::canvas::VertexBufferOptions::usage, and visutwin::canvas::ShaderDefinition::vshader.

Referenced by execute().

◆ execute()

void visutwin::canvas::MetalComposePass::execute ( MTL::RenderCommandEncoder * encoder,
const ComposePassParams & params,
MetalRenderPipeline * pipeline,
const std::shared_ptr< RenderTarget > & renderTarget,
const std::vector< std::shared_ptr< MetalBindGroupFormat > > & bindGroupFormats,
MTL::SamplerState * defaultSampler )

Execute the compose pass on the active render command encoder.

Definition at line 335 of file metalComposePass.cpp.

References visutwin::canvas::Primitive::base, visutwin::canvas::ComposePassParams::bloomIntensity, visutwin::canvas::ComposePassParams::bloomTexture, visutwin::canvas::ComposePassParams::blurTexture, visutwin::canvas::ComposePassParams::blurTextureUpscale, visutwin::canvas::ComposePassParams::cocTexture, visutwin::canvas::Primitive::count, visutwin::canvas::CULLFACE_NONE, visutwin::canvas::ComposePassParams::depthTexture, visutwin::canvas::ComposePassParams::dofBlurRadius, visutwin::canvas::ComposePassParams::dofCameraFar, visutwin::canvas::ComposePassParams::dofCameraNear, visutwin::canvas::ComposePassParams::dofEnabled, visutwin::canvas::ComposePassParams::dofFocusDistance, visutwin::canvas::ComposePassParams::dofFocusRange, visutwin::canvas::ComposePassParams::dofIntensity, ensureResources(), visutwin::canvas::ComposePassParams::exposure, visutwin::canvas::MetalRenderPipeline::get(), visutwin::canvas::Texture::height(), visutwin::canvas::Texture::impl(), visutwin::canvas::Primitive::indexed, visutwin::canvas::PRIMITIVE_TRIANGLES, visutwin::canvas::ComposePassParams::sceneTexture, visutwin::canvas::ComposePassParams::sharpness, visutwin::canvas::ComposePassParams::ssaoTexture, visutwin::canvas::ComposePassParams::taaEnabled, visutwin::canvas::ComposePassParams::toneMapping, visutwin::canvas::Primitive::type, visutwin::canvas::ComposePassParams::vignetteColor, visutwin::canvas::ComposePassParams::vignetteCurvature, visutwin::canvas::ComposePassParams::vignetteEnabled, visutwin::canvas::ComposePassParams::vignetteInner, visutwin::canvas::ComposePassParams::vignetteIntensity, visutwin::canvas::ComposePassParams::vignetteOuter, and visutwin::canvas::Texture::width().

◆ vertexBuffer()

std::shared_ptr< VertexBuffer > visutwin::canvas::MetalComposePass::vertexBuffer ( ) const
inlinenodiscard

Shared vertex buffer (3-vertex full-screen triangle).

Definition at line 47 of file metalComposePass.h.

◆ vertexFormat()

std::shared_ptr< VertexFormat > visutwin::canvas::MetalComposePass::vertexFormat ( ) const
inlinenodiscard

Shared vertex format (full-screen triangle, 14 floats per vertex).

Definition at line 44 of file metalComposePass.h.


The documentation for this class was generated from the following files: