Jump to content

Recommended Posts

Posted

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

Posted

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. 

Posted

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.

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

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

 

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.