~ | some opti

This commit is contained in:
TheRedShip
2025-01-30 17:16:03 +01:00
parent c5ebf2b6ff
commit 977b4eb63e
5 changed files with 21 additions and 61 deletions

View File

@ -22,7 +22,7 @@ class Shader
~Shader(void); ~Shader(void);
void attach(void); void attach(void);
void setupVertexBuffer(const Vertex* vertices, size_t size); void setupVertexBuffer();
void drawTriangles(size_t size); void drawTriangles(size_t size);
// void setBool(const std::string &name, bool value) const; // void setBool(const std::string &name, bool value) const;

View File

@ -24,13 +24,8 @@ pl 0 -2 0 0 1 0 2 // floor
qu -1 1.999 -1 2 0 0 0 0 2 6 qu -1 1.999 -1 2 0 0 0 0 2 6
OBJ scenes/obj/Dragon_800K.obj -0.5 0 0.55 5 0 90 0 OBJ obj/Dragon_800K.obj -0.5 0 0.55 5 0 90 0
OBJ scenes/obj/Dragon_800K.obj 0.5 0 -0.55 5 0 -90 0 OBJ obj/Dragon_800K.obj 0.5 0 -0.55 5 0 -90 0
# OBJ obj/Model.obj
# OBJ obj/Lowpoly_tree_sample.obj
po -1.99 -0.5 -0.5 0 1 0 0 0 1 1 4 po -1.99 -0.5 -0.5 0 1 0 0 0 1 1 4
po 1.99 -0.5 -0.5 0 1 0 0 0 1 0 4 po 1.99 -0.5 -0.5 0 1 0 0 0 1 0 4

View File

@ -168,21 +168,24 @@ hitInfo traceRay(Ray ray)
hitInfo hitScene; hitInfo hitScene;
hitInfo hit; hitInfo hit;
#if 0
for (int i = 0; i < 10; i++) // portal ray for (int i = 0; i < 10; i++) // portal ray
{ {
hitBVH = traverseBVHs(ray); hitBVH = traverseBVHs(ray);
hitScene = traceScene(ray); hitScene = traceScene(ray);
hit = hitBVH.t < hitScene.t ? hitBVH : hitScene; hit = hitBVH.t < hitScene.t ? hitBVH : hitScene;
#if 1
if (hit.obj_index == -1 || objects[hit.obj_index].type != 5) if (hit.obj_index == -1 || objects[hit.obj_index].type != 5)
break ; break ;
ray = portalRay(ray, hit); ray = portalRay(ray, hit);
ray.inv_direction = (1.0 / ray.direction); ray.inv_direction = (1.0 / ray.direction);
#else
return (hit); return (hit);
#endif
} }
#else
hitBVH = traverseBVHs(ray);
hitScene = traceScene(ray);
return (hitBVH.t < hitScene.t ? hitBVH : hitScene);
#endif
return (hit); return (hit);
} }

View File

@ -112,15 +112,10 @@ int main(int argc, char **argv)
shader.attach(); shader.attach();
Vertex vertices[3] = {{{-1.0f, -1.0f}, {0.0f, 0.0f}},{{3.0f, -1.0f}, {2.0f, 0.0f}},{{-1.0f, 3.0f}, {0.0f, 2.0f}}}; shader.setupVertexBuffer();
size_t size = sizeof(vertices) / sizeof(Vertex) / 3;
shader.setupVertexBuffer(vertices, size);
std::vector<int> recorded_fps;
while (!window.shouldClose()) while (!window.shouldClose())
{ {
glUseProgram(shader.getProgramCompute()); glUseProgram(shader.getProgramCompute());
glBindBuffer(GL_SHADER_STORAGE_BUFFER, materialSSBO); glBindBuffer(GL_SHADER_STORAGE_BUFFER, materialSSBO);
@ -131,37 +126,7 @@ int main(int argc, char **argv)
glBindBuffer(GL_SHADER_STORAGE_BUFFER, lightSSBO); glBindBuffer(GL_SHADER_STORAGE_BUFFER, lightSSBO);
glBufferSubData(GL_SHADER_STORAGE_BUFFER, 0, gpu_lights_array.size() * sizeof(int), gpu_lights_array.data()); glBufferSubData(GL_SHADER_STORAGE_BUFFER, 0, gpu_lights_array.size() * sizeof(int), gpu_lights_array.data());
Camera *camera = scene.getCamera(); GPUCamera camera_data = scene.getCamera()->getGPUData();
// performance profiling
if (false)
{
float time = (float)(glfwGetTime()) ;
recorded_fps.push_back((int)window.getFps());
float y_offset = 35;
float dist_to_obj = 55;
float speed = 0.5;
camera->setPosition(glm::vec3(
cos((time + 6.28) * speed) * dist_to_obj,
y_offset,
sin((time + 6.28) * speed) * dist_to_obj
));
glm::vec3 direction = glm::normalize(camera->getPosition());
float yaw = glm::degrees(atan2(direction.z, direction.x));
if ((int)yaw == 179)
break;
camera->setDirection(0, yaw - 180);
camera->updateCameraVectors();
}
//
GPUCamera camera_data = camera->getGPUData();
glBindBuffer(GL_UNIFORM_BUFFER, cameraUBO); glBindBuffer(GL_UNIFORM_BUFFER, cameraUBO);
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(GPUCamera), &camera_data); glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(GPUCamera), &camera_data);
@ -201,12 +166,5 @@ int main(int argc, char **argv)
ImGui_ImplGlfw_Shutdown(); ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext(); ImGui::DestroyContext();
// performance profiling
std::ofstream file("fps.txt");
for (int i = 0; i < (int) recorded_fps.size(); i++)
file << recorded_fps[i] << std::endl;
file.close();
//
return (0); return (0);
} }

View File

@ -151,8 +151,12 @@ void Shader::checkCompileErrors(GLuint shader)
} }
} }
void Shader::setupVertexBuffer(const Vertex* vertices, size_t size) void Shader::setupVertexBuffer()
{ {
Vertex vertices[3] = {{{-1.0f, -1.0f}, {0.0f, 0.0f}},{{3.0f, -1.0f}, {2.0f, 0.0f}},{{-1.0f, 3.0f}, {0.0f, 2.0f}}};
size_t size = sizeof(vertices) / sizeof(Vertex) / 3;
glGenVertexArrays(1, &_screen_VAO); glGenVertexArrays(1, &_screen_VAO);
glGenBuffers(1, &_screen_VBO); glGenBuffers(1, &_screen_VBO);