build_success

This commit is contained in:
turanszkij
2017-03-24 21:00:38 +01:00
parent 10dc98b66e
commit 48731c29dc
9 changed files with 65 additions and 56 deletions
+13 -13
View File
@@ -316,11 +316,11 @@ void wiBULLET::addCapsule(float rad, float hei, const XMFLOAT4& rot, const XMFLO
}
void wiBULLET::addConvexHull(const vector<SkinnedVertex>& vertices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
void wiBULLET::addConvexHull(const vector<XMFLOAT4>& vertices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic){
btCollisionShape* shape = new btConvexHullShape();
for (unsigned int i = 0; i<vertices.size(); ++i)
((btConvexHullShape*)shape)->addPoint(btVector3(vertices[i].pos.x,vertices[i].pos.y,vertices[i].pos.z));
((btConvexHullShape*)shape)->addPoint(btVector3(vertices[i].x,vertices[i].y,vertices[i].z));
shape->setLocalScaling(btVector3(sca.x,sca.y,sca.z));
shape->setMargin(btScalar(0.05));
@@ -374,7 +374,7 @@ void wiBULLET::addConvexHull(const vector<SkinnedVertex>& vertices, const XMFLOA
}
void wiBULLET::addTriangleMesh(const vector<SkinnedVertex>& vertices, const vector<unsigned int>& indices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
void wiBULLET::addTriangleMesh(const vector<XMFLOAT4>& vertices, const vector<unsigned int>& indices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic){
int totalVerts = (int)vertices.size();
@@ -382,7 +382,7 @@ void wiBULLET::addTriangleMesh(const vector<SkinnedVertex>& vertices, const vect
btVector3* btVerts = new btVector3[totalVerts];
for (unsigned int i = 0; i<vertices.size(); ++i)
btVerts[i] = (btVector3(vertices[i].pos.x,vertices[i].pos.y,vertices[i].pos.z));
btVerts[i] = (btVector3(vertices[i].x,vertices[i].y,vertices[i].z));
int* btInd = new int[indices.size()];
for (unsigned int i = 0; i<indices.size(); ++i)
@@ -586,16 +586,16 @@ void wiBULLET::connectVerticesToSoftBody(Mesh* const mesh, int objectI){
btSoftBody::tNodeArray& nodes(softBody->m_nodes);
int gvg = mesh->goalVG;
for (unsigned int i = 0; i<mesh->vertices_Complete.size(); ++i)
for (unsigned int i = 0; i<mesh->vertices[VPROP_POS].size(); ++i)
{
int indexP = mesh->physicalmapGP[i];
float weight = mesh->vertexGroups[gvg].vertices[indexP];
mesh->vertices_Complete[i].pre=mesh->vertices_Complete[i].pos;
mesh->vertices_Complete[i].pos = XMFLOAT4(nodes[indexP].m_x.getX(), nodes[indexP].m_x.getY(), nodes[indexP].m_x.getZ(), 1);
mesh->vertices_Complete[i].nor.x = -nodes[indexP].m_n.getX();
mesh->vertices_Complete[i].nor.y = -nodes[indexP].m_n.getY();
mesh->vertices_Complete[i].nor.z = -nodes[indexP].m_n.getZ();
mesh->vertices_Complete[i].tex=mesh->vertices[i].tex;
mesh->vertices[VPROP_PRE][i] = mesh->vertices[VPROP_POS][i];
mesh->vertices[VPROP_POS][i] = XMFLOAT4(nodes[indexP].m_x.getX(), nodes[indexP].m_x.getY(), nodes[indexP].m_x.getZ(), 1);
mesh->vertices[VPROP_NOR][i].x = -nodes[indexP].m_n.getX();
mesh->vertices[VPROP_NOR][i].y = -nodes[indexP].m_n.getY();
mesh->vertices[VPROP_NOR][i].z = -nodes[indexP].m_n.getZ();
mesh->vertices[VPROP_TEX][i] = mesh->vertices[VPROP_TEX][i];
}
}
}
@@ -702,7 +702,7 @@ void wiBULLET::registerObject(Object* object){
}
if(!object->collisionShape.compare("CONVEX_HULL")){
addConvexHull(
object->mesh->vertices,
object->mesh->vertices[VPROP_POS],
S,R,T
,object->mass,object->friction,object->restitution
,object->damping,object->kinematic
@@ -711,7 +711,7 @@ void wiBULLET::registerObject(Object* object){
}
if(!object->collisionShape.compare("MESH")){
addTriangleMesh(
object->mesh->vertices,object->mesh->indices,
object->mesh->vertices[VPROP_POS],object->mesh->indices,
S,R,T
,object->mass,object->friction,object->restitution
,object->damping,object->kinematic
+2 -2
View File
@@ -43,9 +43,9 @@ public:
, float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic);
void addCapsule(float rad, float hei, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic);
void addConvexHull(const vector<SkinnedVertex>& vertices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
void addConvexHull(const vector<XMFLOAT4>& vertices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic);
void addTriangleMesh(const vector<SkinnedVertex>& vertices, const vector<unsigned int>& indices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
void addTriangleMesh(const vector<XMFLOAT4>& vertices, const vector<unsigned int>& indices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass, float newFriction, float newRestitution, float newDamping, bool kinematic);
void addSoftBodyTriangleMesh(const Mesh* mesh, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
+6 -7
View File
@@ -114,7 +114,6 @@ void wiEmittedParticle::CreateLight()
void wiEmittedParticle::addPoint(const XMMATRIX& t4, const XMMATRIX& t3)
{
vector<SkinnedVertex>& emitterVertexList = object->mesh->vertices;
int gen[3];
gen[0] = getRandomPointOnEmitter();
switch(gen[0]%3)
@@ -146,16 +145,16 @@ void wiEmittedParticle::addPoint(const XMMATRIX& t4, const XMMATRIX& t3)
XMFLOAT3 pos;
XMFLOAT3 vel;
XMVECTOR& vbar=XMVectorBaryCentric(
XMLoadFloat4(&emitterVertexList[object->mesh->indices[gen[0]]].pos)
, XMLoadFloat4(&emitterVertexList[object->mesh->indices[gen[1]]].pos)
, XMLoadFloat4(&emitterVertexList[object->mesh->indices[gen[2]]].pos)
XMLoadFloat4(&object->mesh->vertices[VPROP_POS][object->mesh->indices[gen[0]]])
, XMLoadFloat4(&object->mesh->vertices[VPROP_POS][object->mesh->indices[gen[1]]])
, XMLoadFloat4(&object->mesh->vertices[VPROP_POS][object->mesh->indices[gen[2]]])
, f
, g
);
XMVECTOR& nbar=XMVectorBaryCentric(
XMLoadFloat4(&emitterVertexList[object->mesh->indices[gen[0]]].nor)
, XMLoadFloat4(&emitterVertexList[object->mesh->indices[gen[1]]].nor)
, XMLoadFloat4(&emitterVertexList[object->mesh->indices[gen[2]]].nor)
XMLoadFloat4(&object->mesh->vertices[VPROP_NOR][object->mesh->indices[gen[0]]])
, XMLoadFloat4(&object->mesh->vertices[VPROP_NOR][object->mesh->indices[gen[1]]])
, XMLoadFloat4(&object->mesh->vertices[VPROP_NOR][object->mesh->indices[gen[2]]])
, f
, g
);
+2 -2
View File
@@ -113,7 +113,7 @@ namespace wiGraphicsTypes
virtual void BindConstantBufferHS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindConstantBufferCS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindVertexBuffer(const GPUBuffer* vertexBuffer, int slot, UINT stride, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindVertexBuffers(const GPUBuffer** vertexBuffers, int slot, UINT count, const UINT* strides, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindVertexBuffers(GPUBuffer* const *vertexBuffers, int slot, UINT count, const UINT* strides, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindIndexBuffer(const GPUBuffer* indexBuffer, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindPrimitiveTopology(PRIMITIVETOPOLOGY type, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindVertexLayout(const VertexLayout* layout, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
@@ -122,7 +122,7 @@ namespace wiGraphicsTypes
virtual void BindDepthStencilState(const DepthStencilState* state, UINT stencilRef, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindRasterizerState(const RasterizerState* state, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindStreamOutTarget(const GPUBuffer* buffer, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindStreamOutTargets(const GPUBuffer** buffers, UINT count, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindStreamOutTargets(GPUBuffer* const *buffers, UINT count, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindPS(const PixelShader* shader, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindVS(const VertexShader* shader, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
virtual void BindGS(const GeometryShader* shader, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) = 0;
+5 -5
View File
@@ -1399,7 +1399,7 @@ GraphicsDevice_DX11::GraphicsDevice_DX11(wiWindowRegistration::window_type windo
}
UINT createDeviceFlags = 0;
//createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
D3D_DRIVER_TYPE driverTypes[] =
{
@@ -2942,12 +2942,12 @@ void GraphicsDevice_DX11::BindVertexBuffer(const GPUBuffer* vertexBuffer, int sl
ID3D11Buffer* res = vertexBuffer ? vertexBuffer->resource_DX11 : nullptr;
deviceContexts[threadID]->IASetVertexBuffers(slot, 1, &res, &stride, &offset);
}
void GraphicsDevice_DX11::BindVertexBuffers(const GPUBuffer** vertexBuffers, int slot, UINT count, const UINT* strides, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE)
void GraphicsDevice_DX11::BindVertexBuffers(GPUBuffer* const *vertexBuffers, int slot, UINT count, const UINT* strides, GRAPHICSTHREAD threadID)
{
assert(count <= 8);
UINT offsets[8] = { 0 };
ID3D11Buffer* res[8] = { 0 };
for (int i = 0; i < count; ++i)
for (UINT i = 0; i < count; ++i)
{
res[i] = vertexBuffers[i]->resource_DX11;
}
@@ -3013,12 +3013,12 @@ void GraphicsDevice_DX11::BindStreamOutTarget(const GPUBuffer* buffer, GRAPHICST
ID3D11Buffer* res = buffer ? buffer->resource_DX11 : nullptr;
deviceContexts[threadID]->SOSetTargets(1, &res, offsetSO);
}
void GraphicsDevice_DX11::BindStreamOutTargets(const GPUBuffer** buffers, UINT count, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE)
void GraphicsDevice_DX11::BindStreamOutTargets(GPUBuffer* const * buffers, UINT count, GRAPHICSTHREAD threadID)
{
assert(count <= 8);
UINT offsetSO[8] = { 0 };
ID3D11Buffer* res[8] = { 0 };
for (int i = 0; i < count; ++i)
for (UINT i = 0; i < count; ++i)
{
res[i] = buffers[i]->resource_DX11;
}
+2 -2
View File
@@ -95,7 +95,7 @@ namespace wiGraphicsTypes
virtual void BindConstantBufferHS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindConstantBufferCS(const GPUBuffer* buffer, int slot, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindVertexBuffer(const GPUBuffer* vertexBuffer, int slot, UINT stride, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindVertexBuffers(const GPUBuffer** vertexBuffers, int slot, UINT count, const UINT* strides, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindVertexBuffers(GPUBuffer* const *vertexBuffers, int slot, UINT count, const UINT* strides, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindIndexBuffer(const GPUBuffer* indexBuffer, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindPrimitiveTopology(PRIMITIVETOPOLOGY type, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindVertexLayout(const VertexLayout* layout, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
@@ -104,7 +104,7 @@ namespace wiGraphicsTypes
virtual void BindDepthStencilState(const DepthStencilState* state, UINT stencilRef, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindRasterizerState(const RasterizerState* state, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindStreamOutTarget(const GPUBuffer* buffer, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindStreamOutTargets(const GPUBuffer** buffers, UINT count, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindStreamOutTargets(GPUBuffer* const *buffers, UINT count, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindPS(const PixelShader* shader, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindVS(const VertexShader* shader, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
virtual void BindGS(const GeometryShader* shader, GRAPHICSTHREAD threadID = GRAPHICSTHREAD_IMMEDIATE) override;
+14 -11
View File
@@ -286,11 +286,14 @@ void wiHairParticle::Generate()
if (lenMod[m] < 0) lenMod[m] = 0;
}
SkinnedVertex* v[] = {
&mesh->vertices[vi[0]],
&mesh->vertices[vi[1]],
&mesh->vertices[vi[2]],
};
Vertex verts[3];
verts[0].pos = mesh->vertices[VPROP_POS][vi[0]];
verts[0].nor = mesh->vertices[VPROP_NOR][vi[0]];
verts[1].pos = mesh->vertices[VPROP_POS][vi[1]];
verts[1].nor = mesh->vertices[VPROP_NOR][vi[1]];
verts[2].pos = mesh->vertices[VPROP_POS][vi[2]];
verts[2].nor = mesh->vertices[VPROP_NOR][vi[2]];
if(
(denMod[0]>FLT_EPSILON || denMod[1]>FLT_EPSILON || denMod[2]>FLT_EPSILON) &&
(lenMod[0]>FLT_EPSILON || lenMod[1]>FLT_EPSILON || lenMod[2]>FLT_EPSILON)
@@ -314,9 +317,9 @@ void wiHairParticle::Generate()
g = 1 - g;
}
XMVECTOR pos[] = {
XMVector3Transform(XMLoadFloat4(&v[0]->pos),matr)
, XMVector3Transform(XMLoadFloat4(&v[1]->pos),matr)
, XMVector3Transform(XMLoadFloat4(&v[2]->pos),matr)
XMVector3Transform(XMLoadFloat4(&verts[0].pos),matr)
, XMVector3Transform(XMLoadFloat4(&verts[1].pos),matr)
, XMVector3Transform(XMLoadFloat4(&verts[2].pos),matr)
};
XMVECTOR vbar=XMVectorBaryCentric(
pos[0],pos[1],pos[2]
@@ -324,9 +327,9 @@ void wiHairParticle::Generate()
, g
);
XMVECTOR nbar=XMVectorBaryCentric(
XMLoadFloat4(&v[0]->nor)
, XMLoadFloat4(&v[1]->nor)
, XMLoadFloat4(&v[2]->nor)
XMLoadFloat4(&verts[0].nor)
, XMLoadFloat4(&verts[1].nor)
, XMLoadFloat4(&verts[2].nor)
, f
, g
);
+2 -3
View File
@@ -1,7 +1,6 @@
#pragma once
#include "CommonInclude.h"
struct SkinnedVertex;
struct Mesh;
struct Object;
@@ -47,9 +46,9 @@ public:
, float newMass=1, float newFriction=1, float newRestitution=1, float newDamping=1, bool kinematic=false)=0;
virtual void addCapsule(float rad, float hei, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass=1, float newFriction=1, float newRestitution=1, float newDamping=1, bool kinematic=false)=0;
virtual void addConvexHull(const vector<SkinnedVertex>& vertices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
virtual void addConvexHull(const vector<XMFLOAT4>& vertices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass=1, float newFriction=1, float newRestitution=1, float newDamping=1, bool kinematic=false)=0;
virtual void addTriangleMesh(const vector<SkinnedVertex>& vertices, const vector<unsigned int>& indices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
virtual void addTriangleMesh(const vector<XMFLOAT4>& vertices, const vector<unsigned int>& indices, const XMFLOAT3& sca, const XMFLOAT4& rot, const XMFLOAT3& pos
, float newMass=1, float newFriction=1, float newRestitution=1, float newDamping=1, bool kinematic=false)=0;
+19 -11
View File
@@ -613,10 +613,10 @@ void wiRenderer::LoadShaders()
{ "TEXCOORD", 0, FORMAT_R32G32B32A32_FLOAT, VPROP_TEX, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 1, FORMAT_R32G32B32A32_FLOAT, VPROP_PRE, APPEND_ALIGNED_ELEMENT, INPUT_PER_VERTEX_DATA, 0 },
{ "MATI", 0, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 1, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 2, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "COLOR_DITHER", 0, FORMAT_R32G32B32A32_FLOAT, 1, APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 0, FORMAT_R32G32B32A32_FLOAT, (VPROP_PRE + 1), APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 1, FORMAT_R32G32B32A32_FLOAT, (VPROP_PRE + 1), APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "MATI", 2, FORMAT_R32G32B32A32_FLOAT, (VPROP_PRE + 1), APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
{ "COLOR_DITHER", 0, FORMAT_R32G32B32A32_FLOAT, (VPROP_PRE + 1), APPEND_ALIGNED_ELEMENT, INPUT_PER_INSTANCE_DATA, 1 },
};
UINT numElements = ARRAYSIZE(layout);
VertexShaderInfo* vsinfo = static_cast<VertexShaderInfo*>(wiResourceManager::GetShaderManager()->add(SHADERPATH + "objectVS10.cso", wiResourceManager::VERTEXSHADER, layout, numElements));
@@ -3665,10 +3665,10 @@ void wiRenderer::RenderMeshes(const XMFLOAT3& eye, const CulledCollection& culle
mesh->UpdateRenderableInstances(k, threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_POS].IsValid() ? &mesh->streamoutBuffers[VPROP_POS] : &mesh->vertexBuffers[VPROP_POS]), 0, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_NOR].IsValid() ? &mesh->streamoutBuffers[VPROP_NOR] : &mesh->vertexBuffers[VPROP_NOR]), 0, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_TEX].IsValid() ? &mesh->streamoutBuffers[VPROP_TEX] : &mesh->vertexBuffers[VPROP_TEX]), 0, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_PRE].IsValid() ? &mesh->streamoutBuffers[VPROP_PRE] : &mesh->vertexBuffers[VPROP_PRE]), 0, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_POS].IsValid() ? &mesh->streamoutBuffers[VPROP_POS] : &mesh->vertexBuffers[VPROP_POS]), VPROP_POS, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_NOR].IsValid() ? &mesh->streamoutBuffers[VPROP_NOR] : &mesh->vertexBuffers[VPROP_NOR]), VPROP_NOR, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_TEX].IsValid() ? &mesh->streamoutBuffers[VPROP_TEX] : &mesh->vertexBuffers[VPROP_TEX]), VPROP_TEX, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer((mesh->streamoutBuffers[VPROP_PRE].IsValid() ? &mesh->streamoutBuffers[VPROP_PRE] : &mesh->vertexBuffers[VPROP_PRE]), VPROP_PRE, sizeof(Vertex), threadID);
GetDevice()->BindVertexBuffer(&mesh->instanceBuffer, 1, sizeof(Instance), threadID);
for (MeshSubset& subset : mesh->subsets)
@@ -5012,7 +5012,7 @@ void wiRenderer::RayIntersectMeshes(const RAY& ray, const CulledList& culledObje
Vertex v;
if (object->isArmatureDeformed() && !object->mesh->armature->boneCollection.empty())
{
v = TransformVertex(mesh, i, objectMat_Inverse);
v = TransformVertex(mesh, (int)i, objectMat_Inverse);
_vertices[i] = XMLoadFloat4(&v.pos);
_materialIndices[i] = (int)v.tex.z;
}
@@ -5199,11 +5199,19 @@ void wiRenderer::SynchronizeWithPhysicsEngine(float dt)
int gvg = m->goalVG;
if (gvg >= 0) {
int j = 0;
for (map<int, float>::iterator it = m->vertexGroups[gvg].vertices.begin(); it != m->vertexGroups[gvg].vertices.end(); ++it) {
for (map<int, float>::iterator it = m->vertexGroups[gvg].vertices.begin(); it != m->vertexGroups[gvg].vertices.end(); ++it)
{
int vi = (*it).first;
Vertex tvert = m->vertices_Complete[vi];
Vertex tvert;
if (m->hasArmature())
{
tvert = TransformVertex(m, vi);
}
else
{
tvert.pos = m->vertices[VPROP_POS][vi];
tvert.nor = m->vertices[VPROP_NOR][vi];
}
m->goalPositions[j] = XMFLOAT3(tvert.pos.x, tvert.pos.y, tvert.pos.z);
m->goalNormals[j] = XMFLOAT3(tvert.nor.x, tvert.nor.y, tvert.nor.z);
++j;