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

Abstract GPU interface for resource creation, state management, and draw submission. More...

#include <platform/graphics/graphicsDevice.h>

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

Public Member Functions

void addTexture (const std::shared_ptr< Texture > &texture)
bool atmosphereEnabled () const
std::shared_ptr< RenderTargetbackBuffer () const
void clearQuadTextureBindings ()
virtual void computeDispatch (const std::vector< Compute * > &computes, const std::string &label="")
bool contextLost () const
virtual std::unique_ptr< gpu::HardwareTexturecreateGPUTexture (Texture *texture)=0
virtual std::shared_ptr< IndexBuffercreateIndexBuffer (IndexFormat format, int numIndices, const std::vector< uint8_t > &data={})=0
virtual std::shared_ptr< RenderTargetcreateRenderTarget (const RenderTargetOptions &options)=0
virtual std::shared_ptr< ShadercreateShader (const ShaderDefinition &definition, const std::string &sourceCode="")
virtual std::shared_ptr< VertexBuffercreateVertexBuffer (const std::shared_ptr< VertexFormat > &format, int numVertices, const VertexBufferOptions &options=VertexBufferOptions{})=0
virtual std::shared_ptr< VertexBuffercreateVertexBufferFromNativeBuffer (const std::shared_ptr< VertexFormat > &format, int numVertices, void *nativeBuffer)
CullMode cullMode () const
virtual void draw (const Primitive &primitive, const std::shared_ptr< IndexBuffer > &indexBuffer=nullptr, int numInstances=1, int indirectSlot=-1, bool first=true, bool last=true)=0
int drawCallsPerFrame () const
virtual void endRenderPass (RenderPass *renderPass)=0
virtual void executeCoCPass (const CoCPassParams &params)
virtual void executeComposePass (const ComposePassParams &params)
virtual void executeDepthAwareBlurPass (const DepthAwareBlurPassParams &params, bool horizontal)
virtual void executeDofBlurPass (const DofBlurPassParams &params)
virtual void executeSsaoPass (const SsaoPassParams &params)
virtual void executeTAAPass (Texture *sourceTexture, Texture *historyTexture, Texture *depthTexture, const Matrix4 &viewProjectionPrevious, const Matrix4 &viewProjectionInverse, const std::array< float, 4 > &jitters, const std::array< float, 4 > &cameraParams, bool highQuality, bool historyValid)
void frameEnd ()
void frameStart ()
std::shared_ptr< ShadergetCachedShader (const std::string &name) const
bool hdrPass () const
bool insideRenderPass () const
const Materialmaterial () const
int maxSamples () const
bool quadRenderActive () const
TexturequadTextureBinding (const size_t slot) const
const std::array< Texture *, 8 > & quadTextureBindings () const
std::shared_ptr< VertexBufferquadVertexBuffer ()
const ReflectionBlurParamsreflectionBlurParams () const
TexturereflectionDepthMap () const
TexturereflectionMap () const
void removeTarget (RenderTarget *target)
std::shared_ptr< RenderTargetrenderTarget () const
int renderVersion () const
void resetDrawCallsPerFrame ()
void resizeCanvas (int width, int height)
int samples () const
TexturesceneDepthMap () const
void setAtmosphereEnabled (bool value)
 Enable/disable atmosphere scattering for the current frame.
virtual void setAtmosphereUniforms (const void *data, size_t size)
void setBlendState (const std::shared_ptr< BlendState > &blendState)
void setCachedShader (const std::string &name, const std::shared_ptr< Shader > &shader)
virtual void setClusterBuffers (const void *lightData, size_t lightSize, const void *cellData, size_t cellSize)
virtual void setClusterGridParams (const float *boundsMin, const float *boundsRange, const float *cellsCountByBoundsSize, int cellsX, int cellsY, int cellsZ, int maxLightsPerCell, int numClusteredLights)
void setCullMode (const CullMode cullMode)
virtual void setDepthBias (float depthBias, float slopeScale, float clamp)
void setDepthState (const std::shared_ptr< DepthState > &depthState)
virtual void setDynamicBatchPalette (const void *data, size_t size)
virtual void setEnvironmentUniforms (Texture *envAtlas, float skyboxIntensity, float skyboxMip, const Vector3 &skyDomeCenter=Vector3(0, 0, 0), bool isDome=false, Texture *skyboxCubeMap=nullptr)
void setHdrPass (bool hdr)
virtual void setIndirectDrawBuffer (void *nativeBuffer)
virtual void setLightingUniforms (const Color &ambientColor, const std::vector< GpuLightData > &lights, const Vector3 &cameraPosition, bool enableNormalMaps, float exposure, const FogParams &fogParams=FogParams{}, const ShadowParams &shadowParams=ShadowParams{}, int toneMapping=0)
void setMaterial (const Material *material)
void setQuadRenderActive (const bool active)
void setQuadTextureBinding (const size_t slot, Texture *texture)
void setReflectionBlurParams (const ReflectionBlurParams &params)
void setReflectionDepthMap (Texture *tex)
void setReflectionMap (Texture *tex)
void setRenderTarget (const std::shared_ptr< RenderTarget > &target)
virtual void setResolution (int width, int height)=0
void setSceneDepthMap (Texture *depthMap)
virtual void setScissor (int x, int y, int w, int h)
void setShader (const std::shared_ptr< Shader > &shader)
void setSsaoForwardTexture (Texture *tex)
void setStencilState (const std::shared_ptr< StencilParameters > &stencilFront=nullptr, const std::shared_ptr< StencilParameters > &stencilBack=nullptr)
virtual void setTransformUniforms (const Matrix4 &viewProjection, const Matrix4 &model)
void setVertexBuffer (const std::shared_ptr< VertexBuffer > &vertexBuffer, const size_t slot=0)
virtual void setViewport (float x, float y, float w, float h)
int sh () const
virtual std::pair< int, int > size () const =0
TexturessaoForwardTexture () const
virtual void startRenderPass (RenderPass *renderPass)=0
virtual bool supportsCompute () const
int sw () const
int sx () const
int sy () const
virtual void update ()
void updateClientRect ()
float vh () const
float vw () const
float vx () const
float vy () const
virtual ~GraphicsDevice ()
Public Member Functions inherited from visutwin::canvas::EventHandler
template<typename... Args>
EventHandlerfire (const std::string &name, Args &&... args)
bool hasEvent (const std::string &name) const
void initEventHandler ()
template<typename Callback>
requires (!std::is_same_v<std::decay_t<Callback>, HandleEventCallback>)
EventHandleroff (const std::string &name, Callback &&callback, void *scope=nullptr)
EventHandleroff (const std::string &name="", const HandleEventCallback &callback=HandleEventCallback(), void *scope=nullptr)
EventHandleroffByHandle (EventHandle *handle)
template<typename Callback>
requires (!std::is_same_v<std::decay_t<Callback>, HandleEventCallback>)
EventHandleon (const std::string &name, Callback &&callback, void *scope=nullptr)
EventHandleon (const std::string &name, HandleEventCallback callback, void *scope=nullptr)
template<typename Callback>
requires (!std::is_same_v<std::decay_t<Callback>, HandleEventCallback>)
EventHandleonce (const std::string &name, Callback &&callback, void *scope=nullptr)
EventHandleonce (const std::string &name, HandleEventCallback callback, void *scope=nullptr)
virtual ~EventHandler ()=default

Protected Member Functions

void clearVertexBuffer ()
virtual void onFrameEnd ()
virtual void onFrameStart ()
void recordDrawCall (int count=1)
void setBackBuffer (const std::shared_ptr< RenderTarget > &target)
Protected Member Functions inherited from visutwin::canvas::EventHandler
EventHandleaddCallback (const std::string &name, HandleEventCallback callback, void *scope=nullptr, bool once=false)

Protected Attributes

std::shared_ptr< BlendState_blendState
CullMode _cullMode = CullMode::CULLFACE_BACK
std::shared_ptr< DepthState_depthState
bool _insideRenderPass = false
const Material_material = nullptr
std::shared_ptr< RenderTarget_renderTarget
std::shared_ptr< Shader_shader
std::shared_ptr< StencilParameters_stencilBack
bool _stencilEnabled = false
std::shared_ptr< StencilParameters_stencilFront
std::vector< std::shared_ptr< VertexBuffer > > _vertexBuffers

Friends

class Engine
class RenderPass
class Texture
class VertexBuffer

Detailed Description

Abstract GPU interface for resource creation, state management, and draw submission.

GraphicsDevice is the platform-independent abstraction over the GPU. The concrete implementation (MetalGraphicsDevice) manages triple-buffered ring buffers for uniforms, pipeline state caching, and per-pass texture/uniform binding deduplication. Uses reverse-Z depth.

Definition at line 238 of file graphicsDevice.h.

Constructor & Destructor Documentation

◆ ~GraphicsDevice()

visutwin::canvas::GraphicsDevice::~GraphicsDevice ( )
virtual

Definition at line 25 of file graphicsDevice.cpp.

Member Function Documentation

◆ addTexture()

void visutwin::canvas::GraphicsDevice::addTexture ( const std::shared_ptr< Texture > & texture)
inline

Definition at line 479 of file graphicsDevice.h.

◆ atmosphereEnabled()

bool visutwin::canvas::GraphicsDevice::atmosphereEnabled ( ) const
inline

Definition at line 269 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ backBuffer()

std::shared_ptr< RenderTarget > visutwin::canvas::GraphicsDevice::backBuffer ( ) const
inline

◆ clearQuadTextureBindings()

void visutwin::canvas::GraphicsDevice::clearQuadTextureBindings ( )
inline

Definition at line 378 of file graphicsDevice.h.

◆ clearVertexBuffer()

void visutwin::canvas::GraphicsDevice::clearVertexBuffer ( )
protected

Definition at line 64 of file graphicsDevice.cpp.

References _vertexBuffers.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ computeDispatch()

virtual void visutwin::canvas::GraphicsDevice::computeDispatch ( const std::vector< Compute * > & computes,
const std::string & label = "" )
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 477 of file graphicsDevice.h.

◆ contextLost()

bool visutwin::canvas::GraphicsDevice::contextLost ( ) const
inline

Definition at line 421 of file graphicsDevice.h.

◆ createGPUTexture()

virtual std::unique_ptr< gpu::HardwareTexture > visutwin::canvas::GraphicsDevice::createGPUTexture ( Texture * texture)
pure virtual

Implemented in visutwin::canvas::MetalGraphicsDevice.

References Texture.

◆ createIndexBuffer()

virtual std::shared_ptr< IndexBuffer > visutwin::canvas::GraphicsDevice::createIndexBuffer ( IndexFormat format,
int numIndices,
const std::vector< uint8_t > & data = {} )
pure virtual

◆ createRenderTarget()

virtual std::shared_ptr< RenderTarget > visutwin::canvas::GraphicsDevice::createRenderTarget ( const RenderTargetOptions & options)
pure virtual

◆ createShader()

std::shared_ptr< Shader > visutwin::canvas::GraphicsDevice::createShader ( const ShaderDefinition & definition,
const std::string & sourceCode = "" )
virtual

Create a backend-specific shader from a definition and optional source code. Backends override this to return their own Shader subclass (e.g., MetalShader).

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 57 of file graphicsDevice.cpp.

Referenced by visutwin::canvas::createShader().

◆ createVertexBuffer()

virtual std::shared_ptr< VertexBuffer > visutwin::canvas::GraphicsDevice::createVertexBuffer ( const std::shared_ptr< VertexFormat > & format,
int numVertices,
const VertexBufferOptions & options = VertexBufferOptions{} )
pure virtual

◆ createVertexBufferFromNativeBuffer()

virtual std::shared_ptr< VertexBuffer > visutwin::canvas::GraphicsDevice::createVertexBufferFromNativeBuffer ( const std::shared_ptr< VertexFormat > & format,
int numVertices,
void * nativeBuffer )
inlinevirtual

Create a VertexBuffer that adopts a pre-existing GPU buffer (zero-copy). The nativeBuffer pointer is backend-specific (MTL::Buffer*, VkBuffer, etc.). Used for GPU compute output paths where the buffer is already filled.

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 462 of file graphicsDevice.h.

◆ cullMode()

CullMode visutwin::canvas::GraphicsDevice::cullMode ( ) const
inline

Definition at line 338 of file graphicsDevice.h.

References _cullMode.

Referenced by setCullMode().

◆ draw()

virtual void visutwin::canvas::GraphicsDevice::draw ( const Primitive & primitive,
const std::shared_ptr< IndexBuffer > & indexBuffer = nullptr,
int numInstances = 1,
int indirectSlot = -1,
bool first = true,
bool last = true )
pure virtual

◆ drawCallsPerFrame()

int visutwin::canvas::GraphicsDevice::drawCallsPerFrame ( ) const
inline

Definition at line 418 of file graphicsDevice.h.

◆ endRenderPass()

virtual void visutwin::canvas::GraphicsDevice::endRenderPass ( RenderPass * renderPass)
pure virtual

◆ executeCoCPass()

virtual void visutwin::canvas::GraphicsDevice::executeCoCPass ( const CoCPassParams & params)
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 473 of file graphicsDevice.h.

◆ executeComposePass()

virtual void visutwin::canvas::GraphicsDevice::executeComposePass ( const ComposePassParams & params)
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 467 of file graphicsDevice.h.

◆ executeDepthAwareBlurPass()

virtual void visutwin::canvas::GraphicsDevice::executeDepthAwareBlurPass ( const DepthAwareBlurPassParams & params,
bool horizontal )
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 475 of file graphicsDevice.h.

◆ executeDofBlurPass()

virtual void visutwin::canvas::GraphicsDevice::executeDofBlurPass ( const DofBlurPassParams & params)
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 474 of file graphicsDevice.h.

◆ executeSsaoPass()

virtual void visutwin::canvas::GraphicsDevice::executeSsaoPass ( const SsaoPassParams & params)
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 472 of file graphicsDevice.h.

◆ executeTAAPass()

virtual void visutwin::canvas::GraphicsDevice::executeTAAPass ( Texture * sourceTexture,
Texture * historyTexture,
Texture * depthTexture,
const Matrix4 & viewProjectionPrevious,
const Matrix4 & viewProjectionInverse,
const std::array< float, 4 > & jitters,
const std::array< float, 4 > & cameraParams,
bool highQuality,
bool historyValid )
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 468 of file graphicsDevice.h.

References Texture.

◆ frameEnd()

void visutwin::canvas::GraphicsDevice::frameEnd ( )

Definition at line 47 of file graphicsDevice.cpp.

References onFrameEnd().

◆ frameStart()

void visutwin::canvas::GraphicsDevice::frameStart ( )

Definition at line 40 of file graphicsDevice.cpp.

References onFrameStart().

◆ getCachedShader()

std::shared_ptr< Shader > visutwin::canvas::GraphicsDevice::getCachedShader ( const std::string & name) const
inline

Definition at line 488 of file graphicsDevice.h.

◆ hdrPass()

bool visutwin::canvas::GraphicsDevice::hdrPass ( ) const
inline

Definition at line 397 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ insideRenderPass()

bool visutwin::canvas::GraphicsDevice::insideRenderPass ( ) const
inline

Definition at line 434 of file graphicsDevice.h.

References _insideRenderPass.

◆ material()

const Material * visutwin::canvas::GraphicsDevice::material ( ) const
inline

Definition at line 391 of file graphicsDevice.h.

References _material.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw(), and setMaterial().

◆ maxSamples()

int visutwin::canvas::GraphicsDevice::maxSamples ( ) const
inline

Definition at line 428 of file graphicsDevice.h.

◆ onFrameEnd()

virtual void visutwin::canvas::GraphicsDevice::onFrameEnd ( )
inlineprotectedvirtual

Definition at line 500 of file graphicsDevice.h.

Referenced by frameEnd().

◆ onFrameStart()

virtual void visutwin::canvas::GraphicsDevice::onFrameStart ( )
inlineprotectedvirtual

Definition at line 499 of file graphicsDevice.h.

Referenced by frameStart().

◆ quadRenderActive()

bool visutwin::canvas::GraphicsDevice::quadRenderActive ( ) const
inline

Definition at line 383 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ quadTextureBinding()

Texture * visutwin::canvas::GraphicsDevice::quadTextureBinding ( const size_t slot) const
inline

Definition at line 384 of file graphicsDevice.h.

References Texture.

◆ quadTextureBindings()

const std::array< Texture *, 8 > & visutwin::canvas::GraphicsDevice::quadTextureBindings ( ) const
inline

Definition at line 388 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ quadVertexBuffer()

std::shared_ptr< VertexBuffer > visutwin::canvas::GraphicsDevice::quadVertexBuffer ( )

◆ recordDrawCall()

void visutwin::canvas::GraphicsDevice::recordDrawCall ( int count = 1)
inlineprotected

Definition at line 502 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ reflectionBlurParams()

const ReflectionBlurParams & visutwin::canvas::GraphicsDevice::reflectionBlurParams ( ) const
inline

Definition at line 445 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ reflectionDepthMap()

Texture * visutwin::canvas::GraphicsDevice::reflectionDepthMap ( ) const
inline

Definition at line 450 of file graphicsDevice.h.

References Texture.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ reflectionMap()

Texture * visutwin::canvas::GraphicsDevice::reflectionMap ( ) const
inline

Definition at line 441 of file graphicsDevice.h.

References Texture.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ removeTarget()

void visutwin::canvas::GraphicsDevice::removeTarget ( RenderTarget * target)

Definition at line 91 of file graphicsDevice.cpp.

◆ renderTarget()

◆ renderVersion()

int visutwin::canvas::GraphicsDevice::renderVersion ( ) const
inline

Definition at line 484 of file graphicsDevice.h.

◆ resetDrawCallsPerFrame()

void visutwin::canvas::GraphicsDevice::resetDrawCallsPerFrame ( )
inline

Definition at line 419 of file graphicsDevice.h.

◆ resizeCanvas()

void visutwin::canvas::GraphicsDevice::resizeCanvas ( int width,
int height )

Definition at line 69 of file graphicsDevice.cpp.

References setResolution(), and size().

◆ samples()

int visutwin::canvas::GraphicsDevice::samples ( ) const
inline

Definition at line 411 of file graphicsDevice.h.

◆ sceneDepthMap()

Texture * visutwin::canvas::GraphicsDevice::sceneDepthMap ( ) const
inline

Definition at line 435 of file graphicsDevice.h.

References Texture.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ setAtmosphereEnabled()

void visutwin::canvas::GraphicsDevice::setAtmosphereEnabled ( bool value)
inline

Enable/disable atmosphere scattering for the current frame.

Definition at line 268 of file graphicsDevice.h.

◆ setAtmosphereUniforms()

virtual void visutwin::canvas::GraphicsDevice::setAtmosphereUniforms ( const void * data,
size_t size )
inlinevirtual

Set atmosphere uniforms for Nishita sky scattering. data must point to an AtmosphereUniforms-compatible struct (96 bytes).

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 265 of file graphicsDevice.h.

References size().

◆ setBackBuffer()

void visutwin::canvas::GraphicsDevice::setBackBuffer ( const std::shared_ptr< RenderTarget > & target)
inlineprotected

◆ setBlendState()

void visutwin::canvas::GraphicsDevice::setBlendState ( const std::shared_ptr< BlendState > & blendState)
inline

Definition at line 286 of file graphicsDevice.h.

References _blendState.

◆ setCachedShader()

void visutwin::canvas::GraphicsDevice::setCachedShader ( const std::string & name,
const std::shared_ptr< Shader > & shader )
inline

Definition at line 493 of file graphicsDevice.h.

◆ setClusterBuffers()

virtual void visutwin::canvas::GraphicsDevice::setClusterBuffers ( const void * lightData,
size_t lightSize,
const void * cellData,
size_t cellSize )
inlinevirtual

Bind clustered lighting data for the current frame. lightData: packed GpuClusteredLight array, lightSize: byte count. cellData: uint8 cell→light index mapping, cellSize: byte count.

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 311 of file graphicsDevice.h.

◆ setClusterGridParams()

virtual void visutwin::canvas::GraphicsDevice::setClusterGridParams ( const float * boundsMin,
const float * boundsRange,
const float * cellsCountByBoundsSize,
int cellsX,
int cellsY,
int cellsZ,
int maxLightsPerCell,
int numClusteredLights )
inlinevirtual

Set clustered lighting grid parameters into LightingUniforms. Called by the renderer after WorldClusters::update().

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 322 of file graphicsDevice.h.

◆ setCullMode()

void visutwin::canvas::GraphicsDevice::setCullMode ( const CullMode cullMode)
inline

Definition at line 337 of file graphicsDevice.h.

References _cullMode, and cullMode().

◆ setDepthBias()

virtual void visutwin::canvas::GraphicsDevice::setDepthBias ( float depthBias,
float slopeScale,
float clamp )
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 293 of file graphicsDevice.h.

◆ setDepthState()

void visutwin::canvas::GraphicsDevice::setDepthState ( const std::shared_ptr< DepthState > & depthState)
inline

Definition at line 288 of file graphicsDevice.h.

References _depthState.

◆ setDynamicBatchPalette()

virtual void visutwin::canvas::GraphicsDevice::setDynamicBatchPalette ( const void * data,
size_t size )
inlinevirtual

Bind the dynamic batch matrix palette for the next draw call. data: float4x4 array (16 floats per bone), size: byte count.

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 302 of file graphicsDevice.h.

References size().

◆ setEnvironmentUniforms()

virtual void visutwin::canvas::GraphicsDevice::setEnvironmentUniforms ( Texture * envAtlas,
float skyboxIntensity,
float skyboxMip,
const Vector3 & skyDomeCenter = Vector3(0,0,0),
bool isDome = false,
Texture * skyboxCubeMap = nullptr )
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 259 of file graphicsDevice.h.

References Texture.

◆ setHdrPass()

void visutwin::canvas::GraphicsDevice::setHdrPass ( bool hdr)
inline

Definition at line 396 of file graphicsDevice.h.

◆ setIndirectDrawBuffer()

virtual void visutwin::canvas::GraphicsDevice::setIndirectDrawBuffer ( void * nativeBuffer)
inlinevirtual

Set the indirect draw buffer for the next draw call (GPU-driven instancing). The buffer is consumed (reset to nullptr) after one indirect draw. nativeBuffer is a backend-specific GPU buffer handle.

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 298 of file graphicsDevice.h.

◆ setLightingUniforms()

virtual void visutwin::canvas::GraphicsDevice::setLightingUniforms ( const Color & ambientColor,
const std::vector< GpuLightData > & lights,
const Vector3 & cameraPosition,
bool enableNormalMaps,
float exposure,
const FogParams & fogParams = FogParams{},
const ShadowParams & shadowParams = ShadowParams{},
int toneMapping = 0 )
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 255 of file graphicsDevice.h.

◆ setMaterial()

void visutwin::canvas::GraphicsDevice::setMaterial ( const Material * material)
inline

Definition at line 390 of file graphicsDevice.h.

References _material, and material().

◆ setQuadRenderActive()

void visutwin::canvas::GraphicsDevice::setQuadRenderActive ( const bool active)
inline

Definition at line 382 of file graphicsDevice.h.

◆ setQuadTextureBinding()

void visutwin::canvas::GraphicsDevice::setQuadTextureBinding ( const size_t slot,
Texture * texture )
inline

Definition at line 372 of file graphicsDevice.h.

References Texture.

◆ setReflectionBlurParams()

void visutwin::canvas::GraphicsDevice::setReflectionBlurParams ( const ReflectionBlurParams & params)
inline

Definition at line 446 of file graphicsDevice.h.

◆ setReflectionDepthMap()

void visutwin::canvas::GraphicsDevice::setReflectionDepthMap ( Texture * tex)
inline

Definition at line 451 of file graphicsDevice.h.

References Texture.

◆ setReflectionMap()

void visutwin::canvas::GraphicsDevice::setReflectionMap ( Texture * tex)
inline

Definition at line 442 of file graphicsDevice.h.

References Texture.

◆ setRenderTarget()

void visutwin::canvas::GraphicsDevice::setRenderTarget ( const std::shared_ptr< RenderTarget > & target)
inline

Definition at line 433 of file graphicsDevice.h.

References _renderTarget.

Referenced by visutwin::canvas::MetalGraphicsDevice::startRenderPass().

◆ setResolution()

virtual void visutwin::canvas::GraphicsDevice::setResolution ( int width,
int height )
pure virtual

Implemented in visutwin::canvas::MetalGraphicsDevice.

Referenced by resizeCanvas().

◆ setSceneDepthMap()

void visutwin::canvas::GraphicsDevice::setSceneDepthMap ( Texture * depthMap)
inline

Definition at line 436 of file graphicsDevice.h.

References Texture.

◆ setScissor()

virtual void visutwin::canvas::GraphicsDevice::setScissor ( int x,
int y,
int w,
int h )
inlinevirtual

◆ setShader()

void visutwin::canvas::GraphicsDevice::setShader ( const std::shared_ptr< Shader > & shader)
inline

Definition at line 276 of file graphicsDevice.h.

References _shader.

◆ setSsaoForwardTexture()

void visutwin::canvas::GraphicsDevice::setSsaoForwardTexture ( Texture * tex)
inline

Definition at line 457 of file graphicsDevice.h.

References Texture.

◆ setStencilState()

void visutwin::canvas::GraphicsDevice::setStencilState ( const std::shared_ptr< StencilParameters > & stencilFront = nullptr,
const std::shared_ptr< StencilParameters > & stencilBack = nullptr )
inline

Definition at line 339 of file graphicsDevice.h.

References _stencilBack, _stencilEnabled, and _stencilFront.

◆ setTransformUniforms()

virtual void visutwin::canvas::GraphicsDevice::setTransformUniforms ( const Matrix4 & viewProjection,
const Matrix4 & model )
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 254 of file graphicsDevice.h.

◆ setVertexBuffer()

void visutwin::canvas::GraphicsDevice::setVertexBuffer ( const std::shared_ptr< VertexBuffer > & vertexBuffer,
const size_t slot = 0 )
inline

Definition at line 278 of file graphicsDevice.h.

References _vertexBuffers.

◆ setViewport()

virtual void visutwin::canvas::GraphicsDevice::setViewport ( float x,
float y,
float w,
float h )
inlinevirtual

◆ sh()

int visutwin::canvas::GraphicsDevice::sh ( ) const
inline

Definition at line 370 of file graphicsDevice.h.

◆ size()

virtual std::pair< int, int > visutwin::canvas::GraphicsDevice::size ( ) const
pure virtual

◆ ssaoForwardTexture()

Texture * visutwin::canvas::GraphicsDevice::ssaoForwardTexture ( ) const
inline

Definition at line 456 of file graphicsDevice.h.

References Texture.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ startRenderPass()

virtual void visutwin::canvas::GraphicsDevice::startRenderPass ( RenderPass * renderPass)
pure virtual

◆ supportsCompute()

virtual bool visutwin::canvas::GraphicsDevice::supportsCompute ( ) const
inlinevirtual

Reimplemented in visutwin::canvas::MetalGraphicsDevice.

Definition at line 476 of file graphicsDevice.h.

◆ sw()

int visutwin::canvas::GraphicsDevice::sw ( ) const
inline

Definition at line 369 of file graphicsDevice.h.

◆ sx()

int visutwin::canvas::GraphicsDevice::sx ( ) const
inline

Definition at line 367 of file graphicsDevice.h.

◆ sy()

int visutwin::canvas::GraphicsDevice::sy ( ) const
inline

Definition at line 368 of file graphicsDevice.h.

◆ update()

void visutwin::canvas::GraphicsDevice::update ( )
virtual

Definition at line 80 of file graphicsDevice.cpp.

References updateClientRect().

◆ updateClientRect()

void visutwin::canvas::GraphicsDevice::updateClientRect ( )

Definition at line 85 of file graphicsDevice.cpp.

References size().

Referenced by update().

◆ vh()

float visutwin::canvas::GraphicsDevice::vh ( ) const
inline

Definition at line 366 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ vw()

float visutwin::canvas::GraphicsDevice::vw ( ) const
inline

Definition at line 365 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw().

◆ vx()

float visutwin::canvas::GraphicsDevice::vx ( ) const
inline

Definition at line 363 of file graphicsDevice.h.

◆ vy()

float visutwin::canvas::GraphicsDevice::vy ( ) const
inline

Definition at line 364 of file graphicsDevice.h.

◆ Engine

friend class Engine
friend

Definition at line 525 of file graphicsDevice.h.

References Engine.

Referenced by Engine.

◆ RenderPass

◆ Texture

◆ VertexBuffer

friend class VertexBuffer
friend

Definition at line 527 of file graphicsDevice.h.

References VertexBuffer.

Referenced by VertexBuffer.

Member Data Documentation

◆ _blendState

std::shared_ptr<BlendState> visutwin::canvas::GraphicsDevice::_blendState
protected

Definition at line 512 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw(), and setBlendState().

◆ _cullMode

CullMode visutwin::canvas::GraphicsDevice::_cullMode = CullMode::CULLFACE_BACK
protected

◆ _depthState

std::shared_ptr<DepthState> visutwin::canvas::GraphicsDevice::_depthState
protected

Definition at line 513 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw(), and setDepthState().

◆ _insideRenderPass

◆ _material

const Material* visutwin::canvas::GraphicsDevice::_material = nullptr
protected

Definition at line 522 of file graphicsDevice.h.

Referenced by material(), and setMaterial().

◆ _renderTarget

std::shared_ptr<RenderTarget> visutwin::canvas::GraphicsDevice::_renderTarget
protected

◆ _shader

std::shared_ptr<Shader> visutwin::canvas::GraphicsDevice::_shader
protected

Definition at line 506 of file graphicsDevice.h.

Referenced by visutwin::canvas::MetalGraphicsDevice::draw(), and setShader().

◆ _stencilBack

std::shared_ptr<StencilParameters> visutwin::canvas::GraphicsDevice::_stencilBack
protected

◆ _stencilEnabled

bool visutwin::canvas::GraphicsDevice::_stencilEnabled = false
protected

◆ _stencilFront

std::shared_ptr<StencilParameters> visutwin::canvas::GraphicsDevice::_stencilFront
protected

◆ _vertexBuffers

std::vector<std::shared_ptr<VertexBuffer> > visutwin::canvas::GraphicsDevice::_vertexBuffers
protected

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