载入中...
搜索中...
未找到
FluidSdf.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
14#include <glm/glm.hpp>
15
16#include <cstdint>
17#include <vector>
18
19namespace eve::fluids {
20
23 float distance = 0.f;
24 glm::vec3 gradient{0.f, 1.f, 0.f};
25};
26
29public:
31 glm::vec3 origin{0.f};
33 float cellSize = 1.f;
35 glm::ivec3 dims{0};
37 std::vector<float> distances;
38
41 int voxelCount() const;
42
45 int index(int x, int y, int z) const;
46
49 bool inBounds(const glm::ivec3& c) const;
50
56 float sample(const glm::vec3& p) const;
57
64 MeshSdfSample sampleWithGradient(const glm::vec3& p) const;
65
71 glm::vec3 gradient(const glm::vec3& p) const;
72
80 static MeshSdf makeSphere(const glm::vec3& center, float radius, const glm::ivec3& dims);
81
89 static MeshSdf makePlane(float planeY, const glm::ivec3& dims, float halfExtent);
90
103 static MeshSdf makeFromTriangles(const std::vector<glm::vec3>& positions, const std::vector<uint32_t>& indices,
104 const glm::ivec3& dims);
105};
106
107} // namespace eve::fluids
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
float z
Definition AnimClip.cpp:738
glm::vec4 p[6]
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::vector< std::uint32_t > indices
std::vector< float > positions
std::int32_t c
float radius
V3 origin
Definition RoadBake.cpp:138
uint32_t index
Uniform signed-distance voxel field over a box.
Definition FluidSdf.h:28
std::vector< float > distances
Signed distances, dims.x * dims.y * dims.z floats.
Definition FluidSdf.h:37
GLSL compute kernels for the GPU surface-flow solver.
Definition FluidTarget.h:12
One trilinear SDF sample and its local-space analytic gradient.
Definition FluidSdf.h:22