build_success
This commit is contained in:
+13
-13
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user