11.15
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
#include "dv_config.h"
|
||||
#include "shader/dvc_shader_interface.h"
|
||||
|
||||
#include "vs_standard.h"
|
||||
#include "fs_debug_solid_color.h"
|
||||
#include "fs_debug_base_color.h"
|
||||
#include "fs_debug_normal_texture.h"
|
||||
#include "fs_debug_texture_coordinates.h"
|
||||
#include "fs_debug_geometry_normal.h"
|
||||
|
||||
class StandardShaderInterface : public davinci::ShaderFileInterface
|
||||
{
|
||||
public:
|
||||
virtual davinci::VertexShaderInterface* getVertexShader(const char* szName)
|
||||
{
|
||||
auto it = m_vertexShaderMap.find(szName);
|
||||
if (it != m_vertexShaderMap.end()) return it->second;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
virtual davinci::PixelShaderInterface* getPixelShader(const char* szName)
|
||||
{
|
||||
auto it = m_fragementShaderMap.find(szName);
|
||||
if (it != m_fragementShaderMap.end()) return it->second;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
public:
|
||||
StandardShaderInterface()
|
||||
{
|
||||
registerVertexShader(new StandardVertexShader<false , false>());
|
||||
registerVertexShader(new StandardVertexShader<true , false>());
|
||||
registerVertexShader(new StandardVertexShader<false , true>());
|
||||
registerVertexShader(new StandardVertexShader<true , true>());
|
||||
|
||||
registerFragementShader(new DebugFragementShader_SolidColor());
|
||||
registerFragementShader(new DebugFragementShader_BaseColor());
|
||||
registerFragementShader(new DebugFragementShader_NormalTexture());
|
||||
registerFragementShader(new DebugFragementShader_TextureCoordinates());
|
||||
registerFragementShader(new DebugFragementShader_GeometryNormal());
|
||||
}
|
||||
|
||||
~StandardShaderInterface()
|
||||
{
|
||||
for (auto it = m_vertexShaderMap.begin(); it != m_vertexShaderMap.end(); ++it)
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
m_vertexShaderMap.clear();
|
||||
|
||||
for (auto it = m_fragementShaderMap.begin(); it != m_fragementShaderMap.end(); ++it)
|
||||
{
|
||||
delete it->second;
|
||||
}
|
||||
m_fragementShaderMap.clear();
|
||||
}
|
||||
|
||||
private:
|
||||
void registerVertexShader(davinci::VertexShaderInterface* vertexShader)
|
||||
{
|
||||
m_vertexShaderMap.insert(std::make_pair(vertexShader->getName(), vertexShader));
|
||||
}
|
||||
void registerFragementShader(davinci::PixelShaderInterface* fragementShader)
|
||||
{
|
||||
m_fragementShaderMap.insert(std::make_pair(fragementShader->getName(), fragementShader));
|
||||
}
|
||||
|
||||
private:
|
||||
std::map<std::string, davinci::VertexShaderInterface*> m_vertexShaderMap;
|
||||
std::map<std::string, davinci::PixelShaderInterface*> m_fragementShaderMap;
|
||||
};
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
||||
__declspec(dllexport) davinci::ShaderFileInterface* ShaderFileInterface()
|
||||
{
|
||||
static StandardShaderInterface theInterface;
|
||||
return &theInterface;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user