ellipsoid Posted August 24, 2022 Posted August 24, 2022 Hi there. I am about to enter my final year of a computer science bachelor degree and must do a final year project that spans most of the academic year. I have some experience on the artistic side of computer graphics but none in the computer science side. I would be interested in developing some kind of ray tracer as a final year project but have been told that my project should be technically challenging, have a reason for someone to use my version over any existing version and solve some kind of particular problem. Perhaps I am out of my depth trying to develop a ray tracer that can satisfy the above criteria when I have no prior experience? Some have talked about making one that runs better than existing solutions or being optimised for something in particular. I am not quite sure how I could do this and would greatly appreciate and thoughts, ideas or suggestions on this or any unique relatively unexplored areas of raytracing I could base a project around? Many thanks
mistermack Posted August 24, 2022 Posted August 24, 2022 I can't, but I would comment that they are asking a hell of a lot. If you were sucessful in what they are asking, who would own the copyright or patent, because it sounds like it would be worth some money.
Sensei Posted August 24, 2022 Posted August 24, 2022 Making basic ray-tracer in C/C++ is ~ 1-2 hours project, especially if you will stick to parametric objects like spheres, boxes, planes, therefor objections of teachers about it is too easy for a final degree student project. Do you have experience in OpenGL? Learn especially glDrawPixels() https://docs.microsoft.com/en-us/windows/win32/opengl/gldrawpixels as you will presumably want to use it to output the temporary and final rendering buffer to the screen. From ray-tracing routines: KD-Tree to optimize geometry (if you use some real geometry, not parametric one, which is "too easy to bother" - if you have no parametric objects you have to write I/O loader of some object format like .obj (which is also pretty easy text file, but will take a couple of hours to do it correctly, due to its caveats) - therefor you need/should to partition data to limit the amount of ray-intersection routines to minimum, to not execute it multi-million times per pixel) https://en.wikipedia.org/wiki/K-d_tree eventually Octree: https://en.wikipedia.org/wiki/Octree https://www.google.com/search?q=how+to+find+intersection+of+line+and+plane (instead of plane use also keywords "sphere", "triangle", etc.) Then to shading: https://en.wikipedia.org/wiki/Phong_shading Other algorithms you have in references. https://en.wikipedia.org/wiki/List_of_common_shading_algorithms 47 minutes ago, mistermack said: I can't, but I would comment that they are asking a hell of a lot. Not really. OP wanted to make ray-tracer, not teacher. 47 minutes ago, mistermack said: If you were sucessful in what they are asking, who would own the copyright or patent, because it sounds like it would be worth some money. Not really. Making ray-tracer as homework for one or a couple evenings is typical in IT. 1 hour ago, ellipsoid said: I would be interested in developing some kind of ray tracer as a final year project Yet another ray-tracer.. It would make sense to make yet another ray-tracer, if you would utilize GPU (CUDA/OpenCL) to do it, instead of CPU, or at least give an option to use GPU apart from the CPU. Split to multi-threads is a must have, I think, otherwise your code will run at 1/12 or more of potential of your CPU.. In the easiest implementation, one thread works on Y number of lines at a time. y=screen_height/max_thread_count.. In more challenging, each thread dynamically allocates lines or regions on the screen, which requires some multi-thread communication and synchronization, or thought and experience.
mistermack Posted August 24, 2022 Posted August 24, 2022 10 minutes ago, Sensei said: Not really. OP wanted to make ray-tracer, not teacher. I didn't mention a ray tracer. The teacher said that : 2 hours ago, ellipsoid said: my project should be technically challenging, have a reason for someone to use my version over any existing version and solve some kind of particular problem. That's asking a lot, as I said.
Sensei Posted August 24, 2022 Posted August 24, 2022 12 minutes ago, mistermack said: Quote my project should be technically challenging, have a reason for someone to use my version over any existing version and solve some kind of particular problem. That's asking a lot, as I said. ...computer programs, utility programs, solve problems if they are not just for entertainment....
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now