| 1242 | } |
| 1243 | |
| 1244 | void SetMeshWriteAttributeParams(dmGraphics::WriteAttributeParams* params, |
| 1245 | const dmGraphics::VertexAttributeInfos* attribute_infos, |
| 1246 | dmGraphics::VertexStepFunction step_function, |
| 1247 | const float** world_matrix, |
| 1248 | const float** normal_matrix, |
| 1249 | const float** positions_world_space, |
| 1250 | const float** positions_local_space, |
| 1251 | const float** normals, |
| 1252 | const float** tangents, |
| 1253 | const float** colors, |
| 1254 | const float** texture_transform_2d, |
| 1255 | const float** uv_channels, |
| 1256 | uint32_t uv_channels_count) |
| 1257 | { |
| 1258 | memset(params, 0, sizeof(dmGraphics::WriteAttributeParams)); |
| 1259 | params->m_VertexAttributeInfos = attribute_infos; |
| 1260 | params->m_StepFunction = step_function; |
| 1261 | |
| 1262 | // Per-primitive channels |
| 1263 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_WorldMatrix, world_matrix, dmGraphics::VertexAttribute::VECTOR_TYPE_MAT4, 1, true); |
| 1264 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_NormalMatrix, normal_matrix, dmGraphics::VertexAttribute::VECTOR_TYPE_MAT4, 1, true); |
| 1265 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_TextureTransform2D, texture_transform_2d, dmGraphics::VertexAttribute::VECTOR_TYPE_MAT3, 1, true); |
| 1266 | |
| 1267 | // Per-vertex channels |
| 1268 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_PositionsWorldSpace, positions_world_space, dmGraphics::VertexAttribute::VECTOR_TYPE_VEC3, 1, false); |
| 1269 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_PositionsLocalSpace, positions_local_space, dmGraphics::VertexAttribute::VECTOR_TYPE_VEC3, 1, false); |
| 1270 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_Normals, normals, dmGraphics::VertexAttribute::VECTOR_TYPE_VEC3, 1, false); |
| 1271 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_Tangents, tangents, dmGraphics::VertexAttribute::VECTOR_TYPE_VEC4, 1, false); |
| 1272 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_Colors, colors, dmGraphics::VertexAttribute::VECTOR_TYPE_VEC4, 1, false); |
| 1273 | dmGraphics::SetWriteAttributeStreamDesc(¶ms->m_TexCoords, uv_channels, dmGraphics::VertexAttribute::VECTOR_TYPE_VEC2, uv_channels_count, false); |
| 1274 | } |
| 1275 | |
| 1276 | static uint8_t* WriteVertexDataByAttributes(const dmRigDDF::Mesh* mesh, const float* positions_world, const float* positions_local, const float* normals, const float* tangents, const dmGraphics::VertexAttributeInfos* attribute_infos, uint32_t vertex_stride, const dmVMath::Matrix4& world_matrix, const dmVMath::Matrix4& normal_matrix, uint8_t* out_write_ptr) |
| 1277 | { |
no test coverage detected