Changeset View
Changeset View
Standalone View
Standalone View
source/graphics/ModelDef.h
/* Copyright (C) 2011 Wildfire Games. | /* Copyright (C) 2020 Wildfire Games. | ||||
* This file is part of 0 A.D. | * This file is part of 0 A.D. | ||||
* | * | ||||
* 0 A.D. is free software: you can redistribute it and/or modify | * 0 A.D. is free software: you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
* the Free Software Foundation, either version 2 of the License, or | * the Free Software Foundation, either version 2 of the License, or | ||||
* (at your option) any later version. | * (at your option) any later version. | ||||
* | * | ||||
* 0 A.D. is distributed in the hope that it will be useful, | * 0 A.D. is distributed in the hope that it will be useful, | ||||
▲ Show 20 Lines • Show All 194 Lines • ▼ Show 20 Lines | public: | ||||
static CVector3D SkinNormal(const SModelVertex& vtx, | static CVector3D SkinNormal(const SModelVertex& vtx, | ||||
const CMatrix3D newPoseMatrices[]); | const CMatrix3D newPoseMatrices[]); | ||||
/** | /** | ||||
* Transform vertices' positions and normals. | * Transform vertices' positions and normals. | ||||
* (This is equivalent to looping over SkinPoint and SkinNormal, | * (This is equivalent to looping over SkinPoint and SkinNormal, | ||||
* but slightly more efficient.) | * but slightly more efficient.) | ||||
*/ | */ | ||||
static void SkinPointsAndNormals( | static void(*SkinPointsAndNormals)( | ||||
size_t numVertices, | size_t numVertices, | ||||
const VertexArrayIterator<CVector3D>& Position, | const VertexArrayIterator<CVector3D>& Position, | ||||
const VertexArrayIterator<CVector3D>& Normal, | const VertexArrayIterator<CVector3D>& Normal, | ||||
const SModelVertex* vertices, | const SModelVertex* vertices, | ||||
const size_t* blendIndices, | const size_t* blendIndices, | ||||
const CMatrix3D newPoseMatrices[]); | const CMatrix3D newPoseMatrices[]); | ||||
#if HAVE_SSE | |||||
/** | |||||
* SSE-optimised version of SkinPointsAndNormals. | |||||
*/ | |||||
static void SkinPointsAndNormals_SSE( | |||||
size_t numVertices, | |||||
const VertexArrayIterator<CVector3D>& Position, | |||||
const VertexArrayIterator<CVector3D>& Normal, | |||||
const SModelVertex* vertices, | |||||
const size_t* blendIndices, | |||||
const CMatrix3D newPoseMatrices[]); | |||||
#endif | |||||
/** | /** | ||||
* Blend bone matrices together to fill bone palette. | * Blend bone matrices together to fill bone palette. | ||||
*/ | */ | ||||
void BlendBoneMatrices(CMatrix3D boneMatrices[]); | void BlendBoneMatrices(CMatrix3D boneMatrices[]); | ||||
/** | /** | ||||
* Register renderer private data. Use the key to | * Register renderer private data. Use the key to | ||||
* distinguish between private data used by different render paths. | * distinguish between private data used by different render paths. | ||||
Show All 39 Lines | private: | ||||
VfsPath m_Name; // filename | VfsPath m_Name; // filename | ||||
// renderdata shared by models of the same modeldef, | // renderdata shared by models of the same modeldef, | ||||
// by render path | // by render path | ||||
typedef std::map<const void*, CModelDefRPrivate*> RenderDataMap; | typedef std::map<const void*, CModelDefRPrivate*> RenderDataMap; | ||||
RenderDataMap m_RenderData; | RenderDataMap m_RenderData; | ||||
}; | }; | ||||
extern void ModelDefActivateFastImpl(); | |||||
#endif | #endif | ||||
Wildfire Games · Phabricator