various updates, refactors

This commit is contained in:
Turanszki Janos
2017-10-30 21:03:21 +00:00
parent 57adbf76e1
commit 7e7555b6d2
11 changed files with 96 additions and 186 deletions
+7 -1
View File
@@ -214,6 +214,8 @@ void EmitterWindow::SetObject(Object* obj)
{
object = obj;
emitterComboBox->ClearItems();
if (object != nullptr)
{
for (auto& x : object->eParticleSystems)
@@ -247,7 +249,6 @@ void EmitterWindow::SetObject(Object* obj)
}
else
{
emitterComboBox->ClearItems();
memoryBudgetLabel->SetText("Memory Budget: -");
emitterWindow->SetEnabled(false);
@@ -264,6 +265,11 @@ wiEmittedParticle* EmitterWindow::GetEmitter()
int sel = emitterComboBox->GetSelected();
if (sel < 0)
{
return nullptr;
}
if ((int)object->eParticleSystems.size() > sel)
{
return object->eParticleSystems[sel];
+30
View File
@@ -97,6 +97,36 @@ wiEmittedParticle::wiEmittedParticle(const std::string& newName, const std::stri
SetMaxParticleCount(10000);
}
wiEmittedParticle::wiEmittedParticle(const wiEmittedParticle& other)
{
name = other.name + "0";
object = other.object;
materialName = other.materialName;
material = other.material;
size = other.size;
random_factor = other.random_factor;
normal_factor = other.normal_factor;
count = other.count;
life = other.life;
random_life = other.random_life;
emit = 0;
scaleX = other.scaleX;
scaleY = other.scaleY;
rotation = other.rotation;
motionBlurAmount = other.motionBlurAmount;
SAFE_INIT(particleBuffer);
SAFE_INIT(aliveList[0]);
SAFE_INIT(aliveList[1]);
SAFE_INIT(deadList);
SAFE_INIT(counterBuffer);
SAFE_INIT(indirectDispatchBuffer);
SAFE_INIT(indirectDrawBuffer);
SAFE_INIT(constantBuffer);
SetMaxParticleCount(other.GetMaxParticleCount());
}
void wiEmittedParticle::SetMaxParticleCount(uint32_t value)
{
+1 -37
View File
@@ -5,9 +5,6 @@
#include "ShaderInterop_EmittedParticle.h"
#include "wiIntersectables.h"
#include <set>
#include <deque>
struct SkinnedVertex;
struct Mesh;
struct Object;
@@ -20,40 +17,6 @@ class wiArchive;
class wiEmittedParticle
{
private:
//struct Point
//{
// XMFLOAT3 pos;
// XMFLOAT4 sizOpaMir;
// float rot;
// XMFLOAT3 vel;
// float rotVel;
// float life;
// float maxLife;
// XMFLOAT2 sizBeginEnd;
// Point(){}
// Point(const XMFLOAT3& newPos, const XMFLOAT4& newSizOpaMir, const XMFLOAT3& newVel/*, const XMFLOAT3& newCol*/, float newLife, float newRotVel
// ,float scaleX, float scaleY)
// {
// pos=newPos;
// sizOpaMir=newSizOpaMir;
// vel=newVel;
// //col=newCol;
// life=maxLife=newLife;
// rot=newRotVel;
// rotVel=newRotVel;
// sizBeginEnd.x = sizOpaMir.x;
// sizBeginEnd.y = sizOpaMir.x*scaleX;
// }
//};
//CBUFFER(ConstantBuffer, CBSLOT_OTHER_EMITTEDPARTICLE)
//{
// float mMotionBlurAmount;
// UINT mEmitterMeshIndexCount;
// UINT mEmitCount;
//};
wiGraphicsTypes::GPUBuffer* particleBuffer;
wiGraphicsTypes::GPUBuffer* aliveList[2];
@@ -85,6 +48,7 @@ public:
wiEmittedParticle();
wiEmittedParticle(const std::string& newName, const std::string& newMat, Object* newObject, float newSize, float newRandomFac, float newNormalFac
,float newCount, float newLife, float newRandLife, float newScaleX, float newScaleY, float newRot);
wiEmittedParticle(const wiEmittedParticle& other);
static void SetUpStatic();
static void CleanUpStatic();
+26 -3
View File
@@ -70,7 +70,30 @@ wiHairParticle::wiHairParticle(const std::string& newName, float newLen, int new
Generate();
}
}
wiHairParticle::wiHairParticle(const wiHairParticle& other)
{
cb = nullptr;
particleBuffer = nullptr;
ib = nullptr;
ib_transposed = nullptr;
drawargs = nullptr;
name = other.name + "0";
densityG = other.densityG;
lenG = other.lenG;
length = other.length;
count = other.count;
material = other.material;
object = other.object;
materialName = other.materialName;
particleCount = other.particleCount;
XMStoreFloat4x4(&OriginalMatrix_Inverse, XMMatrixInverse(nullptr, object->getMatrix()));
material = other.material;
if (material)
{
Generate();
}
}
void wiHairParticle::CleanUp()
{
@@ -208,7 +231,7 @@ void wiHairParticle::Settings(int l0,int l1,int l2)
void wiHairParticle::Generate()
{
std::vector<Point> points;
std::vector<Patch> points;
Mesh* mesh = object->mesh;
@@ -331,7 +354,7 @@ void wiHairParticle::Generate()
int ti = wiRandom::getRandom(0, 2);
XMVECTOR tangent = XMVector3Normalize(XMVectorSubtract(pos[ti], pos[(ti + 1) % 3]));
Point addP;
Patch addP;
::XMStoreFloat4(&addP.posLen,vbar);
XMFLOAT3 nor, tan;
@@ -361,7 +384,7 @@ void wiHairParticle::Generate()
GPUBufferDesc bd;
ZeroMemory(&bd, sizeof(bd));
bd.Usage = USAGE_IMMUTABLE;
bd.ByteWidth = (UINT)(sizeof(Point) * particleCount);
bd.ByteWidth = (UINT)(sizeof(Patch) * particleCount);
bd.BindFlags = BIND_VERTEX_BUFFER | BIND_SHADER_RESOURCE;
bd.CPUAccessFlags = 0;
bd.MiscFlags = RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS;
+10 -7
View File
@@ -16,7 +16,7 @@ class wiArchive;
class wiHairParticle
{
public:
struct Point
struct Patch
{
XMFLOAT4 posLen;
UINT normalRand;
@@ -39,6 +39,13 @@ private:
UINT iWidth;
UINT iHeight;
};
wiGraphicsTypes::GPUBuffer *cb;
wiGraphicsTypes::GPUBuffer *particleBuffer;
wiGraphicsTypes::GPUBuffer *ib;
wiGraphicsTypes::GPUBuffer *ib_transposed;
wiGraphicsTypes::GPUBuffer *drawargs;
static wiGraphicsTypes::VertexShader *vs;
static wiGraphicsTypes::PixelShader *ps[SHADERTYPE_COUNT];
static wiGraphicsTypes::ComputeShader *cs_BITONICSORT;
@@ -55,6 +62,8 @@ public:
wiHairParticle();
wiHairParticle(const std::string& newName, float newLen, int newCount
, const std::string& newMat, Object* newObject, const std::string& densityGroup, const std::string& lengthGroup);
wiHairParticle(const wiHairParticle& other);
void CleanUp();
void Generate();
@@ -73,12 +82,6 @@ public:
Object* object;
size_t particleCount;
wiGraphicsTypes::GPUBuffer *cb;
wiGraphicsTypes::GPUBuffer *particleBuffer;
wiGraphicsTypes::GPUBuffer *ib;
wiGraphicsTypes::GPUBuffer *ib_transposed;
wiGraphicsTypes::GPUBuffer *drawargs;
void Serialize(wiArchive& archive);
};
+21 -1
View File
@@ -3849,8 +3849,28 @@ Object::Object(const Object& other):Streamable(other),Transform(other)
physicsType = other.physicsType;
transparency = other.transparency;
color = other.color;
for (auto&x : other.eParticleSystems)
{
eParticleSystems.push_back(new wiEmittedParticle(*x));
eParticleSystems.back()->object = this;
}
for (auto&x : other.hParticleSystems)
{
hParticleSystems.push_back(new wiHairParticle(*x));
hParticleSystems.back()->object = this;
}
}
Object::~Object() {
Object::~Object()
{
for (auto&x : eParticleSystems)
{
SAFE_DELETE(x);
}
for (auto&x : hParticleSystems)
{
SAFE_DELETE(x);
}
}
void Object::init()
{
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wiVersion
// minor features, major updates
const int minor = 13;
// minor bug fixes, alterations, refactors, updates
const int revision = 68;
const int revision = 69;
long GetVersion()
-136
View File
@@ -1,136 +0,0 @@
HUD frame time nsec:,16670000
Range Index,Elapsed Time, First Event,Last Event
0,11552,302,302
1,26464,304,304
2,6752,306,306
3,13312,308,308
4,6752,310,310
5,8544,327,327
6,26720,329,329
7,13568,331,331
8,14080,333,333
9,10880,335,335
10,8032,352,352
11,23808,354,354
12,6976,356,356
13,15264,358,358
14,6624,360,360
15,21760,384,384
16,21312,389,389
17,21312,394,394
18,36928,433,433
19,47008,466,466
20,63712,499,499
21,394240,559,559
22,925120,584,584
23,10289696,609,609
24,1822656,651,651
25,469856,682,682
26,565760,703,703
27,26624,717,717
28,26592,731,731
29,1583776,751,751
30,2679520,838,838
31,5802240,853,853
32,6654112,873,873
33,416768,890,890
34,641024,906,906
35,1735904,920,920
36,3130688,937,937
37,3904352,953,953
38,3941088,983,983
39,3938144,997,997
40,3938080,1014,1014
41,3933120,1017,1017
42,3933280,1034,1034
43,3933120,1037,1037
44,3933056,1054,1054
45,3933152,1057,1057
46,3936288,1071,1071
47,3936128,1089,1089
48,3936032,1092,1092
49,3936064,1106,1106
50,3935520,1124,1124
51,3935488,1127,1127
52,3935360,1141,1141
53,3935264,1159,1159
54,3935360,1162,1162
55,3936064,1176,1176
56,3936064,1194,1194
57,3935136,1197,1197
58,3934688,1211,1211
59,3934848,1229,1229
60,3934784,1232,1232
61,3935456,1246,1246
62,3935584,1264,1264
63,3932416,1267,1267
64,3933152,1281,1281
65,3932384,1299,1299
66,3932224,1302,1302
67,3933984,1316,1316
68,3934176,1334,1334
69,3933056,1337,1337
70,3932480,1351,1351
71,3932480,1369,1369
72,3932544,1372,1372
73,3933664,1386,1386
74,3933760,1404,1404
75,3933536,1407,1407
76,3934432,1421,1421
77,3934496,1439,1439
78,3932864,1442,1442
79,3937216,1456,1456
80,3937248,1474,1474
81,3936160,1477,1477
82,3936160,1491,1491
83,3936096,1509,1509
84,3935936,1512,1512
85,3935872,1526,1526
86,3935264,1543,1543
87,3935168,1546,1546
88,3935072,1560,1560
89,3935072,1577,1577
90,3935008,1580,1580
91,3935008,1594,1594
92,3934976,1611,1611
93,3934464,1614,1614
94,3934432,1628,1628
95,3934432,1642,1642
96,3934208,1659,1659
97,3934176,1662,1662
98,3934144,1676,1676
99,3934112,1694,1694
100,3932416,1697,1697
101,3934080,1711,1711
102,3934240,1729,1729
103,3934272,1732,1732
104,3935328,1746,1746
105,3935392,1764,1764
106,3935072,1767,1767
107,3933696,1781,1781
108,3933792,1799,1799
109,3933792,1802,1802
110,3934816,1816,1816
111,3951552,1834,1834
112,3951008,1837,1837
113,3951840,1851,1851
114,3951968,1869,1869
115,3952000,1872,1872
116,3952480,1886,1886
117,3951104,1904,1904
118,3950304,1907,1907
119,3950464,1921,1921
120,3950336,1939,1939
121,3950304,1942,1942
122,3950624,1956,1956
123,3950592,1974,1974
124,3950560,1977,1977
125,5083744,1996,1996
126,6175968,2009,2009
127,6180064,2023,2023
128,6183200,2037,2037
129,6182624,2054,2054
130,6182848,2057,2057
131,6188480,2074,2074
132,6199360,2077,2077
1 HUD frame time nsec:,16670000
2 Range Index,Elapsed Time, First Event,Last Event
3 0,11552,302,302
4 1,26464,304,304
5 2,6752,306,306
6 3,13312,308,308
7 4,6752,310,310
8 5,8544,327,327
9 6,26720,329,329
10 7,13568,331,331
11 8,14080,333,333
12 9,10880,335,335
13 10,8032,352,352
14 11,23808,354,354
15 12,6976,356,356
16 13,15264,358,358
17 14,6624,360,360
18 15,21760,384,384
19 16,21312,389,389
20 17,21312,394,394
21 18,36928,433,433
22 19,47008,466,466
23 20,63712,499,499
24 21,394240,559,559
25 22,925120,584,584
26 23,10289696,609,609
27 24,1822656,651,651
28 25,469856,682,682
29 26,565760,703,703
30 27,26624,717,717
31 28,26592,731,731
32 29,1583776,751,751
33 30,2679520,838,838
34 31,5802240,853,853
35 32,6654112,873,873
36 33,416768,890,890
37 34,641024,906,906
38 35,1735904,920,920
39 36,3130688,937,937
40 37,3904352,953,953
41 38,3941088,983,983
42 39,3938144,997,997
43 40,3938080,1014,1014
44 41,3933120,1017,1017
45 42,3933280,1034,1034
46 43,3933120,1037,1037
47 44,3933056,1054,1054
48 45,3933152,1057,1057
49 46,3936288,1071,1071
50 47,3936128,1089,1089
51 48,3936032,1092,1092
52 49,3936064,1106,1106
53 50,3935520,1124,1124
54 51,3935488,1127,1127
55 52,3935360,1141,1141
56 53,3935264,1159,1159
57 54,3935360,1162,1162
58 55,3936064,1176,1176
59 56,3936064,1194,1194
60 57,3935136,1197,1197
61 58,3934688,1211,1211
62 59,3934848,1229,1229
63 60,3934784,1232,1232
64 61,3935456,1246,1246
65 62,3935584,1264,1264
66 63,3932416,1267,1267
67 64,3933152,1281,1281
68 65,3932384,1299,1299
69 66,3932224,1302,1302
70 67,3933984,1316,1316
71 68,3934176,1334,1334
72 69,3933056,1337,1337
73 70,3932480,1351,1351
74 71,3932480,1369,1369
75 72,3932544,1372,1372
76 73,3933664,1386,1386
77 74,3933760,1404,1404
78 75,3933536,1407,1407
79 76,3934432,1421,1421
80 77,3934496,1439,1439
81 78,3932864,1442,1442
82 79,3937216,1456,1456
83 80,3937248,1474,1474
84 81,3936160,1477,1477
85 82,3936160,1491,1491
86 83,3936096,1509,1509
87 84,3935936,1512,1512
88 85,3935872,1526,1526
89 86,3935264,1543,1543
90 87,3935168,1546,1546
91 88,3935072,1560,1560
92 89,3935072,1577,1577
93 90,3935008,1580,1580
94 91,3935008,1594,1594
95 92,3934976,1611,1611
96 93,3934464,1614,1614
97 94,3934432,1628,1628
98 95,3934432,1642,1642
99 96,3934208,1659,1659
100 97,3934176,1662,1662
101 98,3934144,1676,1676
102 99,3934112,1694,1694
103 100,3932416,1697,1697
104 101,3934080,1711,1711
105 102,3934240,1729,1729
106 103,3934272,1732,1732
107 104,3935328,1746,1746
108 105,3935392,1764,1764
109 106,3935072,1767,1767
110 107,3933696,1781,1781
111 108,3933792,1799,1799
112 109,3933792,1802,1802
113 110,3934816,1816,1816
114 111,3951552,1834,1834
115 112,3951008,1837,1837
116 113,3951840,1851,1851
117 114,3951968,1869,1869
118 115,3952000,1872,1872
119 116,3952480,1886,1886
120 117,3951104,1904,1904
121 118,3950304,1907,1907
122 119,3950464,1921,1921
123 120,3950336,1939,1939
124 121,3950304,1942,1942
125 122,3950624,1956,1956
126 123,3950592,1974,1974
127 124,3950560,1977,1977
128 125,5083744,1996,1996
129 126,6175968,2009,2009
130 127,6180064,2023,2023
131 128,6183200,2037,2037
132 129,6182624,2054,2054
133 130,6182848,2057,2057
134 131,6188480,2074,2074
135 132,6199360,2077,2077
Binary file not shown.
Binary file not shown.
Binary file not shown.