|
VisuTwin Canvas
C++ 3D Engine — Metal Backend
|
#include <platform/graphics/metal/metalUniformBinder.h>
Public Member Functions | |
| Texture * | envAtlasTexture () const override |
| bool | isMaterialChanged (const Material *mat) const override |
| Texture * | localShadowTexture0 () const override |
| Texture * | localShadowTexture1 () const override |
| Texture * | omniShadowCube0 () const override |
| Texture * | omniShadowCube1 () 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). | |
| Texture * | shadowTexture () const override |
| Texture * | skyboxCubeMapTexture () 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 AtmosphereUniforms & | atmosphereUniforms () const |
| Access the packed AtmosphereUniforms struct. | |
| const LightingUniforms & | lightingUniforms () 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 |
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.
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 151 of file metalUniformBinder.h.
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 146 of file metalUniformBinder.h.
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 154 of file metalUniformBinder.h.
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 155 of file metalUniformBinder.h.
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 156 of file metalUniformBinder.h.
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 157 of file metalUniformBinder.h.
|
overridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 411 of file metalUniformBinder.cpp.
| 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.
|
inline |
Pack clustered lighting grid parameters into LightingUniforms.
Definition at line 98 of file metalUniformBinder.h.
References visutwin::canvas::UniformBinder::_lightingUniforms.
| void visutwin::canvas::MetalUniformBinder::setEnvironmentUniforms | ( | Texture * | envAtlas, |
| float | skyboxIntensity, | ||
| float | skyboxMip, | ||
| const Vector3 & | skyDomeCenter, | ||
| bool | isDome, | ||
| Texture * | skyboxCubeMap ) |
Pack environment uniforms (skybox, env atlas) into LightingUniforms.
Definition at line 310 of file metalUniformBinder.cpp.
References visutwin::canvas::UniformBinder::_lightingUniforms, visutwin::canvas::Vector3::getX(), visutwin::canvas::Vector3::getY(), visutwin::canvas::Vector3::getZ(), visutwin::canvas::RGBM, and visutwin::canvas::RGBP.
| void visutwin::canvas::MetalUniformBinder::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.
Definition at line 120 of file metalUniformBinder.cpp.
References visutwin::canvas::UniformBinder::_lightingUniforms, visutwin::canvas::AreaRect, visutwin::canvas::Color::b, visutwin::canvas::ShadowParams::bias, visutwin::canvas::ShadowParams::cascadeBlend, visutwin::canvas::FogParams::color, visutwin::canvas::FogParams::density, visutwin::canvas::FogParams::enabled, visutwin::canvas::ShadowParams::enabled, visutwin::canvas::FogParams::end, visutwin::canvas::Color::g, visutwin::canvas::Vector3::getX(), visutwin::canvas::Vector3::getY(), visutwin::canvas::Vector3::getZ(), visutwin::canvas::ShadowParams::kMaxLocalShadows, visutwin::canvas::Color::linear(), visutwin::canvas::ShadowParams::localShadowCount, visutwin::canvas::ShadowParams::localShadows, visutwin::canvas::ShadowParams::normalBias, visutwin::canvas::ShadowParams::numCascades, visutwin::canvas::Color::r, visutwin::canvas::ShadowParams::shadowCascadeDistances, visutwin::canvas::ShadowParams::shadowMap, visutwin::canvas::ShadowParams::shadowMatrixPalette, visutwin::canvas::FogParams::start, and visutwin::canvas::ShadowParams::strength.
|
inline |
Pack blurred planar reflection parameters.
Definition at line 75 of file metalUniformBinder.h.
References visutwin::canvas::UniformBinder::_lightingUniforms.
|
inline |
Pack planar reflection depth pass parameters.
Definition at line 89 of file metalUniformBinder.h.
References visutwin::canvas::UniformBinder::_lightingUniforms.
|
inline |
Pack screen resolution for planar reflection screen-space UV.
Definition at line 64 of file metalUniformBinder.h.
References visutwin::canvas::UniformBinder::_lightingUniforms.
| 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().
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 153 of file metalUniformBinder.h.
|
inlinenodiscardoverridevirtual |
Implements visutwin::canvas::UniformBinder.
Definition at line 152 of file metalUniformBinder.h.
| void visutwin::canvas::MetalUniformBinder::submitPerDrawUniforms | ( | MTL::RenderCommandEncoder * | encoder, |
| MetalUniformRingBuffer * | uniformRing, | ||
| const Material * | currentMaterial, | ||
| const void * | uniformData, | ||
| size_t | uniformSize, | ||
| bool | hdrPass ) |
Definition at line 358 of file metalUniformBinder.cpp.
References visutwin::canvas::UniformBinder::_lightingUniforms, visutwin::canvas::MetalUniformRingBuffer::allocate(), and visutwin::canvas::hash32Fnv1a().