在FragementShader的begin函数中准备输入的顶点数据偏移

This commit is contained in:
2025-12-04 23:09:04 +08:00
parent 0cd230b577
commit 656ce63d55
18 changed files with 162 additions and 117 deletions
+4 -4
View File
@@ -89,13 +89,13 @@ void StandardVertexShader::process(size_t index, float32_t* outputVertex)
//output NDC position
{
davinci::fVector3 vertexNDCPos = mat_camera_view_proj * vertexWorldPos;
memcpy((char*)outputVertex + m_outputVertexDesc.getElement(davinci::VET_POSITION_NDC)->offset, &vertexNDCPos, sizeof(davinci::fVector3));
memcpy((char*)outputVertex + m_outputVertexDesc.getElementByType(davinci::VET_POSITION_NDC)->offset, &vertexNDCPos, sizeof(davinci::fVector3));
}
//output world position
if (m_withWorldPos)
{
memcpy((char*)outputVertex + m_outputVertexDesc.getElement(davinci::VET_POSITION_WORLD)->offset, &vertexWorldPos, sizeof(davinci::fVector3));
memcpy((char*)outputVertex + m_outputVertexDesc.getElementByType(davinci::VET_POSITION_WORLD)->offset, &vertexWorldPos, sizeof(davinci::fVector3));
}
//output normal
@@ -107,13 +107,13 @@ void StandardVertexShader::process(size_t index, float32_t* outputVertex)
matNormal = *p_mat_normal;
}
davinci::fVector3 v_normal = (matNormal * davinci::fVector4(a_normal, 0)).xyz().normalise();
memcpy((char*)outputVertex + m_outputVertexDesc.getElement(davinci::VET_NORMAL)->offset, &v_normal, sizeof(davinci::fVector3));
memcpy((char*)outputVertex + m_outputVertexDesc.getElementByType(davinci::VET_NORMAL)->offset, &v_normal, sizeof(davinci::fVector3));
}
//output uv0
if (m_withTexCoord0)
{
memcpy((char*)outputVertex + m_outputVertexDesc.getElement(davinci::VET_TEXCOORD_0)->offset, &a_uv, sizeof(float32_t) * 2);
memcpy((char*)outputVertex + m_outputVertexDesc.getElementByType(davinci::VET_TEXCOORD_0)->offset, &a_uv, sizeof(float32_t) * 2);
}
}