PeriDyno 1.0.0
Loading...
Searching...
No Matches
CalculateNorm.cpp
Go to the documentation of this file.
1#include "CalculateNorm.h"
2
3namespace dyno
4{
6
8 {
9 this->addKernel(
10 "CalculateNorm",
11 std::make_shared<VkProgram>(
12 BUFFER(float), //norm
13 BUFFER(Vec3f), //vector
14 CONSTANT(uint)) //num
15 );
16 kernel("CalculateNorm")->load(getAssetPath() + "shaders/glsl/topology/CalculateNorm.comp.spv");
17 }
18
20 {
21 auto& inData = this->inVec()->getData();
22
23 int num = inData.size();
24
25 if (this->outNorm()->isEmpty())
26 {
27 this->outNorm()->allocate();
28 }
29
30 auto& outData = this->outNorm()->getData();
31 if (outData.size() != num)
32 {
33 outData.resize(num);
34 }
35
36 VkConstant<uint> constNum(num);
37
38 kernel("CalculateNorm")->flush(
39 vkDispatchSize(num, 64),
40 outData.handle(),
41 inData.handle(),
42 &constNum);
43 }
44}
#define IMPLEMENT_CLASS(name)
Definition Object.h:79
#define BUFFER(T)
Definition VkProgram.h:96
#define CONSTANT(T)
Definition VkProgram.h:100
void compute() override
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