Intro Another GSOC Introduction :)

Dear All,

My name is Muhammad Omer Saeed and I am a masters student at the University of Bonn in Germany, specializing in computer graphics and computer vision. I am quite interested in the topic on 'rendering approaches for very far distances' that I found on the ideas page, since it is closely related to my field. I have taken a number of courses at my university in computer graphics and I have a in-depth knowledge of the following topics:
  • Methods for the generation of polygonal meshes (laser scanning, registration and integration of single mesh parts, etc.)
  • Mesh representation: point based representations, efficient mesh data structures
  • Mesh processing: reconstruction techniques, mesh compression, optimization of polygonal meshes (fairing and remeshing), mesh decimation and refinement, hierarchical representations.
  • Parametrization of surfaces, shape segmentation, classification and retrieval
  • Models for the description of optical material properties and light sources
  • Methods and algorithms for the acquisition of optical material properties
  • Algorithms and techniques of image based rendering and digital photography
I wanted to ask what should be my steps for becoming a successful candidate for this project idea in GSOC 16? Are there any bugs that I should try to fix to show my understanding of the technologies used? What should be the content of a successful proposal? Please let me know. Thank you.

P.S. For a detailed overview of my qualifications please visit me on LinkedIn (https://de.linkedin.com/in/musaeed1) and Github (https://github.com/musaeed).

Best Regards
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Hi @Muhammad Omer Saeed and welcome :) I quickly moved your introduction to the proper corner of the forums in case you wonder ;)

Your skillset looks very promising, and I see that @manu3d already likes your introduction. First step would definitely be to fork the repo and get your local copy running (Dev Setup Wiki Page). Once everything is in place you can start looking for some interesting issues, e.g., from the "Contributor Friendly" list. Look out for the "3D Wizardry" label for everything related to rendering and stuff.

I think there is at least one other student interested in the rendering of far distances - good for us and some competition for you ;) Issue #123 is quite old, but a previewer of some sorts might be related to your coding background... Maybe (with a good proposal) this could be extended to be a GSOC topic as well.

Just hop in IRC sometime to have a chat ;)
 

Florian

Active Member
Contributor
Architecture
Hello Muhammad,

welcome, nice topic pick.

About writing a proposl have a look at:

http://write.flossmanuals.net/gsocstudentguide/writing-a-proposal/

About the topic:

Be aware that distance rendering is more than just rendering. The world needs be generated/loaded first. Having everything in memory might not be possible. The world gets loaded chunk wise. Each chunk is 32x32x64 blocks large. The game loads and unloads chunks as the player moves through the world. Unloaded chunks remain in memory till they got saved to disk via a automatically occurring autosave.

Objects (called entities in terasology) in a chunk get currently loaded and saved together with the chunks. The entities do not just get loaded with the chunk but get also activated with the chunk. It is questionable if we need for example a deer to walk around in a chunk that got just loaded to render a chunk that is far far away. Changing the timing of how objects/entities get loaded/unloaded will propably not something done quickly. An alternative could be to generate an optimized render only structure for chunk that get loaded and save it for quick reuse once the chunk the player is on is far away. This isn't easy either since it also means that a new way to load/save this light weight chunk versions of the chunk is needed.

A chunk goes through multiple steps till it is fully loaded and gets rendered. For example before a chunk gets loaded, the game first calculates how light gets to it from the bordering chunks. In addition to that the game renders a chunk only once all adjacent chunks are also ready for rending in order to get border blocks correctly done. This means that currently 5x5x5 chunks need to be loaded before the first chunk can be rendered. See https://github.com/MovingBlocks/Terasology/issues/1886 for more details about that issue. Even if you don't have a nice idea for fixing it, having a look at the code
might get you started in the area of chunk loading.

Another aspect to keep in mind is multiplayer. Transfering also chunks in great distances to all clients might be to much for the server. One possible solution could be to offer a "Render skybox/sphere for this chunk" option. The option could allow a player to render a skybox with the surroundings of a chunk in very very far distances. The rendering could be performed with the normal renderer. The final rendering could then be stored on the server and sent to other clients when the client enters the chunk. Sending other optimized far distance simplifications to clients might also be an option.

I hope that gives your a better idea for what you need to also to plan time in. I suspect that you won't have the time to try out more than one or two far distance render techniques.
Finding out what needs to be done, and going estimations is a very helpful skill when you do later programming for a living. Typically when you are new to estimations, they end up to be way
to short. I suggest that you also plan in time for unexpected corner cases, for getting used to the code and for communication. So I would suggest that you plan just so much that is easily doable.
 

manu3d

Active Member
Contributor
Architecture
@Florian, may I suggest you cut&paste most of your message into issue #319? It'd be good to have it there for the benefit of anybody interested in that issue. As far as I know there is already another person besides Muhammad interested in the topic.
 
Top