generated from Persson-dev/OpenGLComputeShader
fractal #1
38
src/Main.cpp
38
src/Main.cpp
@@ -100,6 +100,10 @@ static const std::filesystem::path s_ComputeShaderPath = "Shaders/Compute.glsl";
|
||||
static const std::filesystem::path s_VertexShaderPath = "Shaders/Vertex.glsl";
|
||||
static const std::filesystem::path s_FragmentShaderPath = "Shaders/Fragment.glsl";
|
||||
|
||||
static std::random_device s_RandomDevice;
|
||||
static std::mt19937 s_Generator(s_RandomDevice());
|
||||
static std::uniform_real_distribution<float> s_Distrib(0, 1);
|
||||
|
||||
static void ErrorCallback(int error, const char* description) {
|
||||
std::cerr << "Error: " << description << std::endl;
|
||||
}
|
||||
@@ -110,33 +114,29 @@ static void ApplyTransforms(const std::vector<glm::mat4>& transformations) {
|
||||
}
|
||||
|
||||
static void GenNewFractal() {
|
||||
std::random_device randomDevice;
|
||||
std::mt19937 generator(randomDevice());
|
||||
std::uniform_real_distribution<float> distrib(0, 1);
|
||||
|
||||
// scale, rotation, shear, translation
|
||||
|
||||
std::vector<glm::mat4> transformations(TRANSFORMATION_COUNT);
|
||||
|
||||
for (std::size_t i = 0; i < transformations.size(); i++) {
|
||||
float scaleX = distrib(generator) * 0.4 + 0.4;
|
||||
float scaleY = distrib(generator) * 0.4 + 0.4;
|
||||
float scaleZ = distrib(generator) * 0.4 + 0.4;
|
||||
float scaleX = s_Distrib(s_Generator) * 0.4 + 0.4;
|
||||
float scaleY = s_Distrib(s_Generator) * 0.4 + 0.4;
|
||||
float scaleZ = s_Distrib(s_Generator) * 0.4 + 0.4;
|
||||
|
||||
float rotX = distrib(generator) * 2 * 3.14;
|
||||
float rotY = distrib(generator) * 2 * 3.14;
|
||||
float rotZ = distrib(generator) * 2 * 3.14;
|
||||
float rotX = s_Distrib(s_Generator) * 2 * 3.14;
|
||||
float rotY = s_Distrib(s_Generator) * 2 * 3.14;
|
||||
float rotZ = s_Distrib(s_Generator) * 2 * 3.14;
|
||||
|
||||
float shearXY = distrib(generator) * 0.2f - 0.1f;
|
||||
float shearXZ = distrib(generator) * 0.2f - 0.1f;
|
||||
float shearYX = distrib(generator) * 0.2f - 0.1f;
|
||||
float shearYZ = distrib(generator) * 0.2f - 0.1f;
|
||||
float shearZX = distrib(generator) * 0.2f - 0.1f;
|
||||
float shearZY = distrib(generator) * 0.2f - 0.1f;
|
||||
float shearXY = s_Distrib(s_Generator) * 0.2f - 0.1f;
|
||||
float shearXZ = s_Distrib(s_Generator) * 0.2f - 0.1f;
|
||||
float shearYX = s_Distrib(s_Generator) * 0.2f - 0.1f;
|
||||
float shearYZ = s_Distrib(s_Generator) * 0.2f - 0.1f;
|
||||
float shearZX = s_Distrib(s_Generator) * 0.2f - 0.1f;
|
||||
float shearZY = s_Distrib(s_Generator) * 0.2f - 0.1f;
|
||||
|
||||
float translateX = distrib(generator) * 1.2f - 0.6f;
|
||||
float translateY = distrib(generator) * 1.2f - 0.6f;
|
||||
float translateZ = distrib(generator) * 1.2f - 0.6f;
|
||||
float translateX = s_Distrib(s_Generator) * 1.2f - 0.6f;
|
||||
float translateY = s_Distrib(s_Generator) * 1.2f - 0.6f;
|
||||
float translateZ = s_Distrib(s_Generator) * 1.2f - 0.6f;
|
||||
|
||||
auto scale = glm::scale(glm::mat4(1), {scaleX, scaleY, scaleZ});
|
||||
auto rotateX = glm::rotate(scale, rotX, {1, 0, 0});
|
||||
|
||||
Reference in New Issue
Block a user