mirror of
https://github.com/TheRedShip/RT_GPU.git
synced 2025-09-27 18:48:36 +02:00
~ | some opti
This commit is contained in:
@ -22,7 +22,7 @@ class Shader
|
||||
~Shader(void);
|
||||
|
||||
void attach(void);
|
||||
void setupVertexBuffer(const Vertex* vertices, size_t size);
|
||||
void setupVertexBuffer();
|
||||
void drawTriangles(size_t size);
|
||||
|
||||
// void setBool(const std::string &name, bool value) const;
|
||||
|
@ -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
|
||||
|
||||
OBJ scenes/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/Model.obj
|
||||
|
||||
# OBJ obj/Lowpoly_tree_sample.obj
|
||||
OBJ 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
|
||||
|
||||
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
|
||||
|
@ -168,21 +168,24 @@ hitInfo traceRay(Ray ray)
|
||||
hitInfo hitScene;
|
||||
hitInfo hit;
|
||||
|
||||
#if 0
|
||||
for (int i = 0; i < 10; i++) // portal ray
|
||||
{
|
||||
hitBVH = traverseBVHs(ray);
|
||||
hitScene = traceScene(ray);
|
||||
|
||||
hit = hitBVH.t < hitScene.t ? hitBVH : hitScene;
|
||||
#if 1
|
||||
if (hit.obj_index == -1 || objects[hit.obj_index].type != 5)
|
||||
break ;
|
||||
ray = portalRay(ray, hit);
|
||||
ray.inv_direction = (1.0 / ray.direction);
|
||||
#else
|
||||
return (hit);
|
||||
#endif
|
||||
if (hit.obj_index == -1 || objects[hit.obj_index].type != 5)
|
||||
break ;
|
||||
ray = portalRay(ray, hit);
|
||||
ray.inv_direction = (1.0 / ray.direction);
|
||||
return (hit);
|
||||
}
|
||||
#else
|
||||
hitBVH = traverseBVHs(ray);
|
||||
hitScene = traceScene(ray);
|
||||
return (hitBVH.t < hitScene.t ? hitBVH : hitScene);
|
||||
#endif
|
||||
|
||||
return (hit);
|
||||
}
|
||||
|
46
srcs/RT.cpp
46
srcs/RT.cpp
@ -112,15 +112,10 @@ int main(int argc, char **argv)
|
||||
|
||||
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}}};
|
||||
size_t size = sizeof(vertices) / sizeof(Vertex) / 3;
|
||||
shader.setupVertexBuffer(vertices, size);
|
||||
|
||||
std::vector<int> recorded_fps;
|
||||
shader.setupVertexBuffer();
|
||||
|
||||
while (!window.shouldClose())
|
||||
{
|
||||
|
||||
glUseProgram(shader.getProgramCompute());
|
||||
|
||||
glBindBuffer(GL_SHADER_STORAGE_BUFFER, materialSSBO);
|
||||
@ -131,37 +126,7 @@ int main(int argc, char **argv)
|
||||
glBindBuffer(GL_SHADER_STORAGE_BUFFER, lightSSBO);
|
||||
glBufferSubData(GL_SHADER_STORAGE_BUFFER, 0, gpu_lights_array.size() * sizeof(int), gpu_lights_array.data());
|
||||
|
||||
Camera *camera = scene.getCamera();
|
||||
|
||||
// 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();
|
||||
GPUCamera camera_data = scene.getCamera()->getGPUData();
|
||||
glBindBuffer(GL_UNIFORM_BUFFER, cameraUBO);
|
||||
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(GPUCamera), &camera_data);
|
||||
|
||||
@ -201,12 +166,5 @@ int main(int argc, char **argv)
|
||||
ImGui_ImplGlfw_Shutdown();
|
||||
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);
|
||||
}
|
||||
|
@ -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);
|
||||
glGenBuffers(1, &_screen_VBO);
|
||||
|
||||
|
Reference in New Issue
Block a user