mirror of
https://github.com/TheRedShip/RT_GPU.git
synced 2025-09-27 18:48:36 +02:00
+ | Handling transformation objects
This commit is contained in:
@ -240,7 +240,7 @@ void ObjParser::parseMtl(std::stringstream &input_line, Scene &scene)
|
||||
file.close();
|
||||
}
|
||||
|
||||
void ObjParser::parse(Scene &scene, glm::vec3 offset)
|
||||
void ObjParser::parse(Scene &scene, glm::vec3 offset, float scale, glm::mat4 transform)
|
||||
{
|
||||
std::string line;
|
||||
std::string identifier;
|
||||
@ -275,6 +275,6 @@ void ObjParser::parse(Scene &scene, glm::vec3 offset)
|
||||
}
|
||||
}
|
||||
|
||||
scene.addBvh(_triangles, offset);
|
||||
scene.addBvh(_triangles, offset, scale, transform);
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ void Scene::addObject(Object *obj)
|
||||
_gpu_objects.push_back(gpu_obj);
|
||||
}
|
||||
|
||||
void Scene::addBvh(std::vector<Triangle> &triangles, glm::vec3 offset)
|
||||
void Scene::addBvh(std::vector<Triangle> &triangles, glm::vec3 offset, float scale, glm::mat4 transform)
|
||||
{
|
||||
GPUBvhData new_bvh_data;
|
||||
std::vector<GPUBvh> new_bvhs_list;
|
||||
@ -154,8 +154,9 @@ void Scene::addBvh(std::vector<Triangle> &triangles, glm::vec3 offset)
|
||||
BVH *bvh = new BVH(triangles, 0, triangles.size());
|
||||
new_bvhs_list = bvh->getGPUBvhs();
|
||||
|
||||
std::cout << glm::to_string(offset) << std::endl;
|
||||
new_bvh_data.transform = transform * scale;
|
||||
new_bvh_data.offset = offset;
|
||||
new_bvh_data.scale = scale;
|
||||
new_bvh_data.bvh_start_index = _gpu_bvh.size();
|
||||
new_bvh_data.triangle_start_index = _gpu_triangles.size();
|
||||
|
||||
|
@ -102,11 +102,21 @@ void SceneParser::parseObj(std::stringstream &line)
|
||||
float y = 0.;
|
||||
float z = 0.;
|
||||
|
||||
float scale = 1.;
|
||||
|
||||
float xtransform = 0.;
|
||||
float ytransform = 0.;
|
||||
float ztransform = 0.;
|
||||
|
||||
line >> name;
|
||||
line >> x >> y >> z;
|
||||
line >> scale;
|
||||
line >> xtransform >> ytransform >> ztransform;
|
||||
|
||||
glm::mat4 transform = glm::eulerAngleXYZ(glm::radians(xtransform), glm::radians(ytransform), glm::radians(ztransform));
|
||||
|
||||
ObjParser obj(name);
|
||||
obj.parse(*_scene, glm::vec3(x, y, z));
|
||||
obj.parse(*_scene, glm::vec3(x, y, z), (1.0 / scale), transform);
|
||||
}
|
||||
|
||||
bool SceneParser::parseLine(const std::string &line)
|
||||
|
@ -67,7 +67,7 @@ Shader::Shader(std::string vertexPath, std::string fragmentPath, std::string com
|
||||
const char *fragmentCode = loadFileWithIncludes(fragmentPath);
|
||||
const char *computeCode = loadFileWithIncludes(computePath);
|
||||
|
||||
// printWithLineNumbers(computeCode);
|
||||
printWithLineNumbers(computeCode);
|
||||
|
||||
_vertex = glCreateShader(GL_VERTEX_SHADER);
|
||||
|
||||
|
Reference in New Issue
Block a user