Jump to content

Final year raytracer project question


ellipsoid

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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....

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.