API Documentation
ShaderPassMemorySlot.h
1 // ShaderPassMemorySlot.h
3 //
5 
6 namespace nkGraphics
7 {
15  {
16  public :
17 
21  enum class DATA_TYPE
22  {
23  UNKNOWN = 0,
24  VECTOR,
25  MATRIX,
28  TARGET_SIZE,
30  TEXTURE_SIZE,
31  VIEW_MATRIX,
33  PROJ_MATRIX,
35  CAM_POSITION,
37  TIME,
38  CUSTOM
39  } ;
40 
41  public :
42 
48  ShaderPassMemorySlot (System* system) noexcept ;
52  virtual ~ShaderPassMemorySlot () ;
53 
54  // Getters
58  void* getData () const ;
62  virtual unsigned int getDataSize () const ;
66  virtual nkMemory::StringView getDataTypeAsString () const override ;
70  DATA_TYPE getType () const ;
79 
80  // Setters
87  void setFromVector (const nkMaths::Vector& data) ;
94  void setFromMatrix (const nkMaths::Matrix& data) ;
101  void setAsCamCornersWorld (Camera* forcedCamera = nullptr) ;
108  void setAsCamCornersView (Camera* forcedCamera = nullptr) ;
125  void setAsTargetSize () ;
148  void setAsProjectionParameters (Camera* forcedCamera = nullptr) ;
160  void setAsViewMatrix (Camera* forcedCamera = nullptr) ;
167  void setAsViewMatrixInv (Camera* forcedCamera = nullptr) ;
179  void setAsProjectionMatrix (Camera* forcedCamera = nullptr) ;
186  void setAsProjectionMatrixInv (Camera* forcedCamera = nullptr) ;
193  void setAsCameraPosition (Camera* forcedCamera = nullptr) ;
200  void setAsCameraDirectionWorld (Camera* forcedCamera = nullptr) ;
217  void setAsTextureSize (Texture* tex) ;
236  void setAsTime (unsigned int modulo) ;
243 
244  // Import / Export
245  virtual void exportClassToTree (nkExport::Node* rootNode) override ;
246  virtual void importClassFromTree (nkExport::Node* rootNode) override ;
247  } ;
248 }
nkGraphics::ShaderPassMemorySlot::getDataAsMatrix
nkMaths::Matrix * getDataAsMatrix() const
nkGraphics::ShaderPassMemorySlot::ShaderPassMemorySlot
ShaderPassMemorySlot(System *system) noexcept
nkGraphics::ShaderPassMemorySlot::setAsProjectionParameters
void setAsProjectionParameters(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::TIME
@ TIME
Writes information about time (float4).
nkGraphics::ShaderMemorySlot
A memory slot in a memory resource.
Definition: ShaderMemorySlot.h:15
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::VIEW_MATRIX_INV
@ VIEW_MATRIX_INV
Writes the active inverse view matrix (float4x4).
nkGraphics::ShaderPassMemorySlot::setAsViewMatrix
void setAsViewMatrix(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::CAM_POSITION
@ CAM_POSITION
Writes the active camera position (float4).
nkGraphics::Camera
Offers all controls to model a camera.
Definition: Camera.h:14
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::VECTOR
@ VECTOR
Writes a vector (float4).
nkGraphics::ShaderPassMemorySlot::importClassFromTree
virtual void importClassFromTree(nkExport::Node *rootNode) override
nkGraphics::Texture
A texture used for rendering, hosted on GPU.
Definition: Texture.h:35
nkGraphics::ShaderPassMemorySlot::setAsProjectionMatrix
void setAsProjectionMatrix(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot::getType
DATA_TYPE getType() const
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::CUSTOM
@ CUSTOM
Uses a custom slot made by external code.
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::TEXTURE_SIZE
@ TEXTURE_SIZE
Writes a given texture's size (int4).
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::CAM_CORNERS_VIEW
@ CAM_CORNERS_VIEW
Writes the cam corners direction in view space (float4 [4]).
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::TARGET_SIZE
@ TARGET_SIZE
Writes the active render target size (int4).
nkMaths::Matrix
Represents a 4x4 float matrix.
Definition: Matrix.h:14
nkGraphics::ShaderPassMemorySlot::setAsProjectionMatrixInv
void setAsProjectionMatrixInv(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::PROJECTION_PARAMS
@ PROJECTION_PARAMS
Writes the projection parameters (float4).
nkGraphics::ShaderPassMemorySlot::DATA_TYPE
DATA_TYPE
Definition: ShaderPassMemorySlot.h:22
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::VIEW_MATRIX
@ VIEW_MATRIX
Writes the active view matrix (float4x4).
nkGraphics::ShaderPassMemorySlot::getDataTypeAsString
virtual nkMemory::StringView getDataTypeAsString() const override
nkGraphics::ShaderPassMemorySlot::setAsCamCornersView
void setAsCamCornersView(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot
A memory slot that fits into a ConstantBuffer. The slot fills entries within the buffer.
Definition: ShaderPassMemorySlot.h:15
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::PROJ_MATRIX_INV
@ PROJ_MATRIX_INV
Writes the active inverse projection matrix (float4x4).
nkGraphics::ShaderPassMemorySlot::getDataAsVector
nkMaths::Vector * getDataAsVector() const
nkGraphics::ShaderPassMemorySlot::setFromVector
void setFromVector(const nkMaths::Vector &data)
nkGraphics::ShaderPassMemorySlot::getData
void * getData() const
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::MATRIX
@ MATRIX
Writes a matrix (float4x4).
nkExport::Node
A node in the tree structure representing the data to export / import.
Definition: Node.h:42
nkGraphics::ShaderPassMemorySlot::setAsCameraDirectionWorld
void setAsCameraDirectionWorld(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot::setAsViewMatrixInv
void setAsViewMatrixInv(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::UNKNOWN
@ UNKNOWN
Unknown place holder.
nkGraphics::ShaderPassMemorySlot::getDataSize
virtual unsigned int getDataSize() const
nkMemory::UniquePtr
Smart pointer owning the object instance it encapsulates.
Definition: UniquePtr.h:17
nkGraphics::ShaderPassMemorySlot::setAsTextureSize
void setAsTextureSize(Texture *tex)
nkGraphics::ShaderPassMemorySlot::setAsCustom
void setAsCustom(nkMemory::UniquePtr< ShaderPassCustomSlot > slot)
nkMemory::StringView
Class holding information about a string, with no ownership over the data.
Definition: StringView.h:22
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::CAM_CORNERS_WORLD
@ CAM_CORNERS_WORLD
Writes the cam corners direction in world space (float4 [4]).
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::CAM_DIRECTION_WORLD
@ CAM_DIRECTION_WORLD
Writes the active camera direction (float4).
nkGraphics::ShaderPassMemorySlot::~ShaderPassMemorySlot
virtual ~ShaderPassMemorySlot()
nkGraphics::ShaderPassMemorySlot::DATA_TYPE::PROJ_MATRIX
@ PROJ_MATRIX
Writes the active projection matrix (float4x4).
nkGraphics::ShaderPassMemorySlot::setAsTargetSize
void setAsTargetSize()
nkGraphics::ShaderPassMemorySlot::setAsTime
void setAsTime(unsigned int modulo)
nkGraphics
Encompasses all API of component NilkinsGraphics.
Definition: BoundingBox.h:7
nkGraphics::ShaderPassMemorySlot::setAsCameraPosition
void setAsCameraPosition(Camera *forcedCamera=nullptr)
nkMaths::Vector
A 4-component vector class, with floats.
Definition: Vector.h:12
nkGraphics::ShaderPassMemorySlot::setAsCamCornersWorld
void setAsCamCornersWorld(Camera *forcedCamera=nullptr)
nkGraphics::ShaderPassMemorySlot::exportClassToTree
virtual void exportClassToTree(nkExport::Node *rootNode) override
nkGraphics::ShaderPassMemorySlot::setFromMatrix
void setFromMatrix(const nkMaths::Matrix &data)