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

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

Inheritance diagram for visutwin::canvas::MetalUniformBinder:
[legend]

Public Member Functions

TextureenvAtlasTexture () const override
bool isMaterialChanged (const Material *mat) const override
TexturelocalShadowTexture0 () const override
TexturelocalShadowTexture1 () const override
TextureomniShadowCube0 () const override
TextureomniShadowCube1 () const override
void resetPassState () override
void setAtmosphereUniforms (const void *data, size_t size)
 Pack atmosphere uniforms (Nishita scattering) into AtmosphereUniforms.
void setClusterParams (const float *boundsMin, const float *boundsRange, const float *cellsCountByBoundsSize, int cellsX, int cellsY, int cellsZ, int maxLightsPerCell, int numClusteredLights)
 Pack clustered lighting grid parameters into LightingUniforms.
void setEnvironmentUniforms (Texture *envAtlas, float skyboxIntensity, float skyboxMip, const Vector3 &skyDomeCenter, bool isDome, Texture *skyboxCubeMap)
 Pack environment uniforms (skybox, env atlas) into LightingUniforms.
void setLightingUniforms (const Color &ambientColor, const std::vector< GpuLightData > &lights, const Vector3 &cameraPosition, bool enableNormalMaps, float exposure, const FogParams &fogParams, const ShadowParams &shadowParams, int toneMapping=0)
 Pack lighting uniforms into the internal LightingUniforms struct.
void setReflectionBlurParams (float intensity, float blurAmount, float fadeStrength, float angleFade, float fadeR, float fadeG, float fadeB)
 Pack blurred planar reflection parameters.
void setReflectionDepthParams (float planeDistance, float heightRange)
 Pack planar reflection depth pass parameters.
void setScreenResolution (float width, float height)
 Pack screen resolution for planar reflection screen-space UV.
void setTransformUniforms (MTL::RenderCommandEncoder *encoder, MetalUniformRingBuffer *transformRing, const Matrix4 &viewProjection, const Matrix4 &model)
 Pack transform uniforms (SceneData VP + ModelData per draw).
TextureshadowTexture () const override
TextureskyboxCubeMapTexture () const override
void submitPerDrawUniforms (MTL::RenderCommandEncoder *encoder, MetalUniformRingBuffer *uniformRing, const Material *currentMaterial, const void *uniformData, size_t uniformSize, bool hdrPass)
Public Member Functions inherited from visutwin::canvas::UniformBinder
const AtmosphereUniformsatmosphereUniforms () const
 Access the packed AtmosphereUniforms struct.
const LightingUniformslightingUniforms () const
 Access the packed LightingUniforms struct (for backends to submit to GPU).
virtual ~UniformBinder ()=default

Additional Inherited Members

Protected Attributes inherited from visutwin::canvas::UniformBinder
AtmosphereUniforms _atmosphereUniforms
LightingUniforms _lightingUniforms

Detailed Description

Metal implementation of uniform binding. Packs CPU-side uniform data into GPU structs and manages per-pass deduplication so that identical data is not re-uploaded to the ring buffer.

Definition at line 34 of file metalUniformBinder.h.

Member Function Documentation

◆ envAtlasTexture()

Texture * visutwin::canvas::MetalUniformBinder::envAtlasTexture ( ) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 151 of file metalUniformBinder.h.

◆ isMaterialChanged()

bool visutwin::canvas::MetalUniformBinder::isMaterialChanged ( const Material * mat) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 146 of file metalUniformBinder.h.

◆ localShadowTexture0()

Texture * visutwin::canvas::MetalUniformBinder::localShadowTexture0 ( ) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 154 of file metalUniformBinder.h.

◆ localShadowTexture1()

Texture * visutwin::canvas::MetalUniformBinder::localShadowTexture1 ( ) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 155 of file metalUniformBinder.h.

◆ omniShadowCube0()

Texture * visutwin::canvas::MetalUniformBinder::omniShadowCube0 ( ) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 156 of file metalUniformBinder.h.

◆ omniShadowCube1()

Texture * visutwin::canvas::MetalUniformBinder::omniShadowCube1 ( ) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 157 of file metalUniformBinder.h.

◆ resetPassState()

void visutwin::canvas::MetalUniformBinder::resetPassState ( )
overridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 411 of file metalUniformBinder.cpp.

◆ setAtmosphereUniforms()

void visutwin::canvas::MetalUniformBinder::setAtmosphereUniforms ( const void * data,
size_t size )

Pack atmosphere uniforms (Nishita scattering) into AtmosphereUniforms.

Definition at line 347 of file metalUniformBinder.cpp.

References visutwin::canvas::UniformBinder::_atmosphereUniforms.

◆ setClusterParams()

void visutwin::canvas::MetalUniformBinder::setClusterParams ( const float * boundsMin,
const float * boundsRange,
const float * cellsCountByBoundsSize,
int cellsX,
int cellsY,
int cellsZ,
int maxLightsPerCell,
int numClusteredLights )
inline

Pack clustered lighting grid parameters into LightingUniforms.

Definition at line 98 of file metalUniformBinder.h.

References visutwin::canvas::UniformBinder::_lightingUniforms.

◆ setEnvironmentUniforms()

void visutwin::canvas::MetalUniformBinder::setEnvironmentUniforms ( Texture * envAtlas,
float skyboxIntensity,
float skyboxMip,
const Vector3 & skyDomeCenter,
bool isDome,
Texture * skyboxCubeMap )

◆ setLightingUniforms()

◆ setReflectionBlurParams()

void visutwin::canvas::MetalUniformBinder::setReflectionBlurParams ( float intensity,
float blurAmount,
float fadeStrength,
float angleFade,
float fadeR,
float fadeG,
float fadeB )
inline

Pack blurred planar reflection parameters.

Definition at line 75 of file metalUniformBinder.h.

References visutwin::canvas::UniformBinder::_lightingUniforms.

◆ setReflectionDepthParams()

void visutwin::canvas::MetalUniformBinder::setReflectionDepthParams ( float planeDistance,
float heightRange )
inline

Pack planar reflection depth pass parameters.

Definition at line 89 of file metalUniformBinder.h.

References visutwin::canvas::UniformBinder::_lightingUniforms.

◆ setScreenResolution()

void visutwin::canvas::MetalUniformBinder::setScreenResolution ( float width,
float height )
inline

Pack screen resolution for planar reflection screen-space UV.

Definition at line 64 of file metalUniformBinder.h.

References visutwin::canvas::UniformBinder::_lightingUniforms.

◆ setTransformUniforms()

void visutwin::canvas::MetalUniformBinder::setTransformUniforms ( MTL::RenderCommandEncoder * encoder,
MetalUniformRingBuffer * transformRing,
const Matrix4 & viewProjection,
const Matrix4 & model )

Pack transform uniforms (SceneData VP + ModelData per draw).

Definition at line 47 of file metalUniformBinder.cpp.

References visutwin::canvas::MetalUniformRingBuffer::allocate(), visutwin::canvas::Matrix4::getElement(), and visutwin::canvas::toSimdMatrix().

◆ shadowTexture()

Texture * visutwin::canvas::MetalUniformBinder::shadowTexture ( ) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 153 of file metalUniformBinder.h.

◆ skyboxCubeMapTexture()

Texture * visutwin::canvas::MetalUniformBinder::skyboxCubeMapTexture ( ) const
inlinenodiscardoverridevirtual

Implements visutwin::canvas::UniformBinder.

Definition at line 152 of file metalUniformBinder.h.

◆ submitPerDrawUniforms()

void visutwin::canvas::MetalUniformBinder::submitPerDrawUniforms ( MTL::RenderCommandEncoder * encoder,
MetalUniformRingBuffer * uniformRing,
const Material * currentMaterial,
const void * uniformData,
size_t uniformSize,
bool hdrPass )

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