在FragementShader的begin函数中准备输入的顶点数据偏移
This commit is contained in:
@@ -5,29 +5,37 @@
|
||||
#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";
|
||||
}
|
||||
|
||||
void DebugFragementShader_GeometryNormal::begin(const davinci::RenderPipe* pipe, davinci::MaterialConstPtr material)
|
||||
bool DebugFragementShader_GeometryNormal::begin(const RenderPipe* pipe, MaterialConstPtr material, const VertexDesc& veretexDesc)
|
||||
{
|
||||
m_pipe = pipe;
|
||||
m_material = material;
|
||||
|
||||
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 davinci::VertexDesc& veretexDesc, const float32_t* pixelData, davinci::fVector4& color)
|
||||
void DebugFragementShader_GeometryNormal::process(const float32_t* pixelData, fVector4& color)
|
||||
{
|
||||
const davinci::UniformBuffer& uniformBuffer = m_pipe->getUniformBuffer();
|
||||
const UniformBuffer& uniformBuffer = m_pipe->getUniformBuffer();
|
||||
|
||||
const davinci::VertexDesc::Element* v_normal_Element = veretexDesc.getElement("v_normal");
|
||||
const davinci::fVector3* v_normal = (const davinci::fVector3*)(pixelData + (v_normal_Element->offset / sizeof(float32_t)));
|
||||
fVector3 v_normal = *((const fVector3*)(pixelData + m_vNormalOffset));
|
||||
|
||||
davinci::fVector3 normalColor = *v_normal;
|
||||
fVector3 normalColor = v_normal;
|
||||
normalColor.normalise();
|
||||
|
||||
normalColor = normalColor * 0.5f + 0.5f;
|
||||
color = davinci::fVector4(normalColor, 1);
|
||||
color = fVector4(normalColor, 1);
|
||||
}
|
||||
|
||||
void DebugFragementShader_GeometryNormal::end()
|
||||
|
||||
Reference in New Issue
Block a user