8 #include "bufferbinding.h"
10 #include "structbuffer.h"
13 #include <rtti/objectptr.h>
14 #include <glm/glm.hpp>
15 #include <utility/dllexport.h>
16 #include <nap/resource.h>
21 class BufferBindingInstance;
79 mBindingName(bindingName),
80 mBindingChangedCallback(bindingChangedCallback)
95 bool hasBuffer()
const {
return mBuffer !=
nullptr; }
141 template<
typename INSTANCE_TYPE,
typename RESOURCE_TYPE,
typename DECLARATION_TYPE>
182 mDeclaration(&declaration)
229 void raiseChanged() {
if (mBindingChangedCallback) mBindingChangedCallback(*
this); }
233 nap::Slot<> mBufferChangedSlot = { [&]() ->
void { raiseChanged(); } };
235 const ShaderVariableStructBufferDeclaration* mDeclaration;
253 mDeclaration(&declaration)
325 nap::Slot<> mBufferChangedSlot = { [&]() ->
void { raiseChanged(); } };
350 NAP_ASSERT_MSG(mDeclaration->mStride == buffer.
getElementSize(),
"Buffer declaration stride is not equal to buffer element size")
352 if (mBuffer !=
nullptr)
353 mBuffer->bufferChanged.disconnect(mBufferChangedSlot);
363 NAP_ASSERT_MSG(mDeclaration->mStride == resource.
mBuffer.getElementSize(),
"Buffer declaration stride is not equal to buffer element size")
365 if (mBuffer !=
nullptr)
366 mBuffer->bufferChanged.disconnect(mBufferChangedSlot);
368 mBuffer = resource.
mBuffer.get();
369 mBuffer->bufferChanged.connect(mBufferChangedSlot);
Definition: shadervariabledeclarations.h:58
bool hasBuffer() const
Definition: bufferbindinginstance.h:95
const ShaderVariableValueArrayDeclaration & getNumericDeclaration() const
Definition: bufferbindinginstance.h:264
Definition: materialinstance.h:101
Definition: bufferbinding.h:68
BufferBindingInstance(const std::string &bindingName, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:78
nap::Signal bufferChanged
Definition: gpubuffer.h:146
virtual const ShaderVariableDeclaration & getDeclaration() const override
Definition: bufferbindinginstance.h:259
Definition: material.h:41
const TypedGPUBufferNumeric< T > & getTypedBuffer() const
Definition: bufferbindinginstance.h:310
Definition: bufferbindinginstance.h:246
BufferBindingChangedCallback mBindingChangedCallback
Definition: bufferbindinginstance.h:114
Definition: gpubuffer.h:222
Definition: signalslot.h:18
TypedBufferBindingNumericInstance(const std::string &bindingName, const ShaderVariableValueArrayDeclaration &declaration, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:281
void setBuffer(TypedGPUBufferNumeric< T > &buffer)
Definition: bufferbindinginstance.h:348
Definition: bufferbindinginstance.h:73
Definition: shadervariabledeclarations.h:140
Definition: errorstate.h:19
rtti::ObjectPtr< TypedGPUBufferNumeric< T > > mBuffer
Definition: bufferbinding.h:146
GPUBuffer * mBuffer
Definition: bufferbindinginstance.h:115
const GPUBuffer & getBuffer() const
Definition: bufferbindinginstance.h:100
const ShaderVariableStructBufferDeclaration & getStructDeclaration() const
Definition: bufferbindinginstance.h:198
std::function< void(BufferBindingInstance &)> BufferBindingChangedCallback
Definition: bufferbindinginstance.h:24
BufferBindingNumericInstance(const std::string &bindingName, const ShaderVariableValueArrayDeclaration &declaration, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:251
Definition: bufferbindinginstance.h:175
TypedGPUBufferNumeric< T > & getTypedBuffer()
Definition: bufferbindinginstance.h:315
Definition: structbuffer.h:36
Definition: bufferbinding.h:135
virtual uint32 getElementSize() const override
Definition: gpubuffer.h:253
const std::string mBindingName
Definition: bufferbindinginstance.h:113
BufferBindingStructInstance(const std::string &bindingName, const ShaderVariableStructBufferDeclaration &declaration, const BufferBindingChangedCallback &bindingChangedCallback)
Definition: bufferbindinginstance.h:180
Definition: templateapp.h:17
StructBuffer & getBuffer()
Definition: bufferbindinginstance.h:208
GPUBuffer & getBuffer()
Definition: bufferbindinginstance.h:105
Definition: gpubuffer.h:64
Definition: gpubuffer.h:308
Definition: shadervariabledeclarations.h:171
void connect(Slot< Args... > &slot)
Definition: signalslot.h:285
const GPUBufferNumeric & getBuffer() const
Definition: bufferbindinginstance.h:288
const StructBuffer & getBuffer() const
Definition: bufferbindinginstance.h:203
const std::string & getBindingName() const
Definition: bufferbindinginstance.h:110
const ShaderVariableValueArrayDeclaration * mDeclaration
Definition: bufferbindinginstance.h:267
Definition: bufferbinding.h:154
Definition: bufferbindinginstance.h:276
Definition: shadervariabledeclarations.h:155
virtual const ShaderVariableDeclaration & getDeclaration() const override
Definition: bufferbindinginstance.h:193
GPUBufferNumeric & getBuffer()
Definition: bufferbindinginstance.h:293