generated from Persson-dev/OpenGLComputeShader
3d projection
This commit is contained in:
@@ -5,11 +5,14 @@ layout(std430, binding = 3) buffer layoutName
|
|||||||
float data_SSBO[];
|
float data_SSBO[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
layout(location = 0) uniform mat4 viewMatrix;
|
||||||
|
layout(location = 1) uniform mat4 projectionMatrix;
|
||||||
|
|
||||||
vec3 unpack(uint index) {
|
vec3 unpack(uint index) {
|
||||||
return vec3(data_SSBO[index * 3], data_SSBO[index * 3 + 1], data_SSBO[index * 3 + 2]);
|
return vec3(data_SSBO[index * 3], data_SSBO[index * 3 + 1], data_SSBO[index * 3 + 2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = vec4(unpack(gl_InstanceID), 1.0);
|
gl_Position = projectionMatrix * viewMatrix * vec4(unpack(gl_InstanceID), 1.0);
|
||||||
}
|
}
|
||||||
14
src/Main.cpp
14
src/Main.cpp
@@ -10,7 +10,7 @@
|
|||||||
#include <random>
|
#include <random>
|
||||||
|
|
||||||
constexpr int WORK_GROUP_SIZE = 64;
|
constexpr int WORK_GROUP_SIZE = 64;
|
||||||
constexpr int PARTICLE_COUNT = WORK_GROUP_SIZE * 10000;
|
constexpr int PARTICLE_COUNT = WORK_GROUP_SIZE * 15625;
|
||||||
|
|
||||||
constexpr int SWAP_INTERVAL = 1;
|
constexpr int SWAP_INTERVAL = 1;
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ static void ErrorCallback(int error, const char* description) {
|
|||||||
|
|
||||||
static void ApplyTransforms(const std::vector<glm::mat4>& transformations) {
|
static void ApplyTransforms(const std::vector<glm::mat4>& transformations) {
|
||||||
glUseProgram(s_ComputeShader);
|
glUseProgram(s_ComputeShader);
|
||||||
glUniformMatrix4fv(1, transformations.size(), true, glm::value_ptr(transformations[0]));
|
glUniformMatrix4fv(1, transformations.size(), false, glm::value_ptr(transformations[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GenNewFractal() {
|
static void GenNewFractal() {
|
||||||
@@ -233,6 +233,13 @@ static GLFWwindow* InitWindow() {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto viewMatrix = glm::lookAt(glm::vec3{1, 2, 2}, {0, 0, 0}, {0, 1, 0});
|
||||||
|
auto projectionMatrix = glm::perspective(70.0f, 2.0f, 0.01f, 10.0f);
|
||||||
|
|
||||||
|
glUseProgram(s_GraphicsShader);
|
||||||
|
glUniformMatrix4fv(0, 1, false, glm::value_ptr(viewMatrix));
|
||||||
|
glUniformMatrix4fv(1, 1, false, glm::value_ptr(projectionMatrix));
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +259,8 @@ int main() {
|
|||||||
|
|
||||||
glBindVertexArray(vertexArray);
|
glBindVertexArray(vertexArray);
|
||||||
|
|
||||||
ApplyTransforms(SIERPINSKI_TRIANGLE);
|
// ApplyTransforms(SIERPINSKI_TRIANGLE);
|
||||||
|
GenNewFractal();
|
||||||
|
|
||||||
while (!glfwWindowShouldClose(window)) {
|
while (!glfwWindowShouldClose(window)) {
|
||||||
// ScopedTimer timer("Main Loop");
|
// ScopedTimer timer("Main Loop");
|
||||||
|
|||||||
Reference in New Issue
Block a user