#include "Runtime/Graphics/Shaders/CMapSurfaceShader.hpp" #include "Runtime/Graphics/CGraphics.hpp" #include "CMapSurfaceShader.cpp.hshhead" namespace metaforce { using namespace hsh::pipeline; struct CMapSurfaceShaderPipeline : pipeline, BlendAttachment<>, depth_compare, depth_write, cull_mode> { CMapSurfaceShaderPipeline(hsh::uniform_buffer uniBuf, hsh::vertex_buffer vbo, hsh::index_buffer ibo) { this->position = uniBuf->mtx * hsh::float4(vbo->pos, 1.f); this->color_out[0] = uniBuf->color; } }; CMapSurfaceShader::CMapSurfaceShader(hsh::vertex_buffer vbo, hsh::index_buffer ibo) { m_uniBuf = hsh::create_dynamic_uniform_buffer(); m_dataBind.hsh_bind(CMapSurfaceShaderPipeline(m_uniBuf.get(), vbo, ibo)); } void CMapSurfaceShader::draw(const zeus::CColor& color, u32 start, u32 count) { SCOPED_GRAPHICS_DEBUG_GROUP("CMapSurfaceShader::draw", zeus::skMagenta); #if !HSH_PROFILE_MODE m_uniBuf.load({CGraphics::GetPerspectiveProjectionMatrix(true) * CGraphics::g_GXModelView.toMatrix4f(), color}); #endif m_dataBind.draw_indexed(start, count); } } // namespace metaforce