#include "fs_debug_show_texture.h" #include "device/dvc_device.h" #include "device/dvc_uniform_buffer.h" #include "asset/dvc_texture.h" #include "shader/dvc_shader_functions.h" #include "pipe/dvc_render_pipe.h" using namespace davinci; const char* DebugFragementShader_ShowTexture::getName(void) const { return "debug:show_texture"; } bool DebugFragementShader_ShowTexture::begin(const RenderPipe* pipe, MaterialConstPtr material, const VertexDesc& veretexDesc) { m_pipe = pipe; if (!(material->getParam("u_textureInfo", m_textureInfo))) { return false; } if (const VertexDesc::Element* element = veretexDesc.getElementByType(static_cast(VET_TEXCOORD_0+m_textureInfo.texCoord))) { m_vTextureCoordinateOffset = element->offset / sizeof(float32_t); } else return false; return true; } void DebugFragementShader_ShowTexture::process(const float32_t* pixelData, fVector4& color) { const fVector2* v_TextureCoordinate = (const fVector2*)(pixelData + m_vTextureCoordinateOffset); fVector4 textureColor = shader::texture2D(*m_pipe, m_textureInfo, (*v_TextureCoordinate), fVector4::WHITE); color = textureColor; } void DebugFragementShader_ShowTexture::end() { m_textureInfo.texture.reset(); }