Files
davinci2/source/shaders/standard/fs_debug_show_texture.cpp

45 lines
1.2 KiB
C++

#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<VertexElementType>(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();
}