PeriDyno 1.0.0
Loading...
Searching...
No Matches
ColorMapping.cpp
Go to the documentation of this file.
1#include "ColorMapping.h"
2#include "Math/SimpleMath.h"
3
4namespace dyno
5{
7
9 {
10 this->addKernel(
11 "MapHeatColor",
12 std::make_shared<VkProgram>(
13 BUFFER(Vec3f), //color
14 BUFFER(float), //scalar
15 UNIFORM(float), //min
16 UNIFORM(float), //max
17 CONSTANT(uint)) //num
18 );
19 kernel("MapHeatColor")->load(getAssetPath() + "shaders/glsl/graphics/MapHeatColor.comp.spv");
20
21 this->addKernel(
22 "MapJetColor",
23 std::make_shared<VkProgram>(
24 BUFFER(Vec3f), //color
25 BUFFER(float), //scalar
26 UNIFORM(float), //min
27 UNIFORM(float), //max
28 CONSTANT(uint)) //num
29 );
30 kernel("MapJetColor")->load(getAssetPath() + "shaders/glsl/graphics/MapJetColor.comp.spv");
31 }
32
34 {
35 auto& inData = this->inScalar()->getData();
36
37 uint num = inData.size();
38
39 if (this->outColor()->isEmpty())
40 {
41 this->outColor()->allocate();
42 }
43
44 auto& outData = this->outColor()->getData();
45 if (outData.size() != num)
46 {
47 outData.resize(num);
48 }
49
50 VkUniform<float> uniMin;
51 VkUniform<float> uniMax;
52 uniMin.setValue(this->varMin()->getValue());
53 uniMax.setValue(this->varMax()->getValue());
54
55 VkConstant<uint> constNum(num);
56
57 if(this->varType()->getData() == ColorTable::Jet)
58 {
59 kernel("MapJetColor")->flush(
60 vkDispatchSize(num, 64),
61 outData.handle(),
62 inData.handle(),
63 &uniMin,
64 &uniMax,
65 &constNum);
66 }
67 else if(this->varType()->getData() == ColorTable::Heat)
68 {
69 kernel("MapHeatColor")->flush(
70 vkDispatchSize(num, 64),
71 outData.handle(),
72 inData.handle(),
73 &uniMin,
74 &uniMax,
75 &constNum);
76 }
77 }
78}
#define IMPLEMENT_CLASS(name)
Definition Object.h:79
#define UNIFORM(T)
Definition VkProgram.h:99
#define BUFFER(T)
Definition VkProgram.h:96
#define CONSTANT(T)
Definition VkProgram.h:100
void compute() override
void setValue(T val)
Definition VkUniform.inl:32
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
static dim3 vkDispatchSize(uint totalSize, uint blockSize)
Definition VkProgram.h:34
Vector< float, 3 > Vec3f
Definition Vector3D.h:93
unsigned int uint
Definition VkProgram.h:14