44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
#include "fs_debug_geometry_normal.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_GeometryNormal::getName(void) const
|
|
{
|
|
return "debug:geometry_normal";
|
|
}
|
|
|
|
bool DebugFragementShader_GeometryNormal::begin(const RenderPipe* pipe, MaterialConstPtr material, const VertexDesc& veretexDesc)
|
|
{
|
|
m_pipe = pipe;
|
|
|
|
if (const VertexDesc::Element* element = veretexDesc.getElementByType(VET_NORMAL))
|
|
{
|
|
m_vNormalOffset = element->offset / sizeof(float32_t);
|
|
}
|
|
else return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
void DebugFragementShader_GeometryNormal::process(const float32_t* pixelData, fVector4& color)
|
|
{
|
|
const UniformBuffer& uniformBuffer = m_pipe->getUniformBuffer();
|
|
|
|
fVector3 v_normal = *((const fVector3*)(pixelData + m_vNormalOffset));
|
|
|
|
fVector3 normalColor = v_normal;
|
|
normalColor.normalise();
|
|
|
|
normalColor = normalColor * 0.5f + 0.5f;
|
|
color = fVector4(normalColor, 1);
|
|
}
|
|
|
|
void DebugFragementShader_GeometryNormal::end()
|
|
{
|
|
}
|