#pragma once #include "dvc_config.h" #include "dvc_pre_declare.h" #include "shader/dvc_shader_interface.h" #include "device/dvc_vertex_desc.h" class TestVertexShader : public davinci::VertexShaderInterface { public: virtual const char* getName(void) const; virtual const davinci::VertexDesc& getOutputVertexDesc() const; virtual size_t getOutputVertexByteSize(void) const; virtual void prepare(const davinci::UniformBuffer* uniformBuffer, SetInputAttributeFunc setInputAttributeFunc); virtual void process(size_t index, void* outputVertex, davinci::fVector3& vertexWorldPos); private: const davinci::UniformBuffer* m_uniformBuffer; davinci::DeviceBufferAccessorConstPtr m_POSITION; davinci::DeviceBufferAccessorConstPtr m_NORMAL; davinci::DeviceBufferAccessorConstPtr m_TEXCOORD_0; davinci::DeviceBufferAccessorConstPtr m_COLOR_0; davinci::VertexDesc m_outputVertexDesc; public: TestVertexShader(); virtual ~TestVertexShader(); }; class StandardVertexShader : public davinci::VertexShaderInterface { public: virtual const char* getName(void) const; virtual const davinci::VertexDesc& getOutputVertexDesc() const; virtual size_t getOutputVertexByteSize(void) const; virtual void prepare(const davinci::UniformBuffer* uniformBuffer, SetInputAttributeFunc setInputAttributeFunc); virtual void process(size_t index, void* outputVertex, davinci::fVector3& vertexWorldPos); private: const davinci::UniformBuffer* m_uniformBuffer = nullptr; davinci::DeviceBufferAccessorConstPtr m_POSITION; davinci::VertexDesc m_outputVertexDesc; public: StandardVertexShader(); virtual ~StandardVertexShader(); };