This commit is contained in:
2025-11-15 16:27:19 +08:00
parent 8db6f7b115
commit a0beb9eac7
35 changed files with 886 additions and 128 deletions
+41
View File
@@ -0,0 +1,41 @@
#pragma once
#include "dvc_config.h"
#include "shader/dvc_shader_interface.h"
template<bool WithNormal, bool WithUV>
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::RenderPipe* pipe, SetInputAttributeFunc setInputAttributeFunc);
virtual void process(size_t index, void* outputVertex, davinci::fVector3& vertexWorldPos);
private:
const davinci::RenderPipe* m_pipe = nullptr;
davinci::VertexDesc m_outputVertexDesc;
using InputBufferMembers = decltype(std::tuple_cat(
std::tuple<davinci::DeviceBufferAccessorConstPtr>(),
std::conditional_t<WithNormal, std::tuple<davinci::DeviceBufferAccessorConstPtr>, std::tuple<>>{},
std::conditional_t<WithUV, std::tuple<davinci::DeviceBufferAccessorConstPtr>, std::tuple<>>{}
));
InputBufferMembers m_inputAccessors;
static constexpr int32_t iPOSITION() { return 0; };
static constexpr int32_t iNORMAL() { return 1; };
static constexpr int32_t iUV() { return WithNormal+1; };
//davinci::DeviceBufferAccessorConstPtr& getPositionAccessor();
//davinci::DeviceBufferAccessorConstPtr& getNormalAccessor();
//davinci::DeviceBufferAccessorConstPtr& getUVAccessor();
public:
StandardVertexShader();
virtual ~StandardVertexShader();
};
#include "vs_standard.inc"