User:AnkushKhandelwal/OpenGLRendering
OpenGL Framework Brief Description: The Objective of the project is to Re-factor and re-write the existing code of OpenSCAD preferably by implementing or using an existing rendering/scenegraph framework for cleaner rendering code. This code can be imported to softwares like GLES2 which opens up more possibilities like WebGL and native support for ARM Linux platforms that usually only provide GLES2 implementation.
Contents
Personal Information
- Name: Ankush Khandelwal
- Email-address: ankush.rawat95@gmail.com
- IRC username: ank_95
- Contact Number: +918886330979
Background Information
- Pursuing Computer Science from IIIT Hyderabad, Hyderabad, Andhra Pradesh, India. Currently in 2nd year.
- Worked in c, c++ and OpenGL 2/3.
- Interested in Graphics and front-end development.
- I am a Linux user and want to step in the Open Source World.
- I am familiar with git. Commit my work on git using github account(github.com/ankush1995).
Project Information
Title: Improve OpenGL Rendering
Brief Summary
- The Main Objective of the project is to get a cleaner rendering code and also better support and better responsiveness for bigger models. The current rendering infrastructure of OpenSCAD is scattered around with various bits partially belonging to external packages (CGAL, OpenCSG)and the usage of OpenGL in many places degrade rendering performance of large models. Hence It is required to re-factor and re-write the existing infrastructure.
Detailed Description
- For the above described project following features and task needs to be done.
Identify Goals and Requirements
First and foremost task needs to be done is collecting info about existing OpenGL frameworks which have many advantages as well as disadvantages compared to OpenScad. By understanding them, we are able to identify what are the goals that needs to be achieved and also what problems can arise in meeting those goals. Here is a wiki page displaying some information about the same : https://github.com/openscad/openscad/wiki/Information-About-Other-Frameworks.
Creating or Selecting Scenegraph/Rendering Library
The Goal of this library would be to provide rendering data structure to abstract buffer objects and also to manage Qt event mappings to camera. This Library will help to refactor internal OpenSCAD code instead of the current rendering used in OpenSCAD. The Rendering using the Library will be more simple and clean, it will be helpful for calling CGAL objects, Polyset objects and helper objects like axis display.
Spliting the OpenGL code in Different classes
We need to split out the openGL code from the polyset classes and all other classes and make a different class or data structure and it is used directly. In All it should be a seperate component which takes objects (for example , polyset) and renders it, in an effort to isolate the rendering from the rest of the software. The code of OpenSCAD is in openGL 2 and 1.1 + extentions and also we have users on openGL 2 and openGL 1.1 + extentions , so abstracting away OpenGL extensions and version differences is important.
A patch has been submitted in which the OpenGL code is in one file and other renderin code is in another : https://github.com/openscad/openscad/pull/1249
Off-Screen Rendering
This is another feature which is very important. There should be GUI-less off-screen rendering which means without the window we can do rendering and it should work on desktop as well as on headless VMs. The only requirement is that it works on all desktop OS’es and headless Linux, but better headless support is a priority.
View-model
The next step could be to create a “view model” for storing OpenGL-centric data structures for efficient rendering. The main purpose of making view model is for rendering views, so we can use this to store all the OpenGL related component so that we have better rendering. Another important task would be to convert the polyset into a better data structure for rendering, and use that data structure from the OpenGL code so that the opengl code isn’t referencing PolySet at all that would make it easier to create a separation between the Model and the View.
Deliverables
- Cleaner rendering code
- Better support and better responsiveness for bigger models
- view-modal of the OpenGL code
- Better rendered model
- Optional: Support for ARM platforms using GLES2 (e.g. Raspberry Pi)
Communication
Time Availability
I will be available 60 to 72 hours / week, can spend more according to the work requirement.
Email/Mailing List
My email address is ankush.rawat95@gmail.com, I have subscribed to both brlcad and openscad mailing lists. I have been in contact through these mailing lists and irc channel with other community members.
Real-Time Contact
I am interacting with the mentors through OpenSCAD's IRC channel(#openscad) on freenode. My nick name on IRC is ank_95 . I am comfortable with talking to my mentor via telephone if needed. Contact Number: +918886330979
Why OpenSCAD?
OpenSCAD is an open source CAD software application used to make 3D solid models. It has various applications in mechanical, civil, electronics and designing hardware tools for research and education purposes. The software has potential to be used by the large number of professionals and hardware developers. I like ths community beacause it is related to graphics, geometry and this it the first time I am contributing in opensource world and participating in GSOC. And I think IRC is the best way of communication with the mentors, I feel very comfortable asking questions to them on IRC(#openscad) and also discuss about new ideas.
Why OpenGL Rendering Project?
After I decided to work under this community, I explored various projects and this projects fascinated me and I thought that I am able to this project as I like OpenGL a lot and understands it better. I am pretty sure that I will able to do this project and if I do not know something I will learn it and apply in the project. I have looked through the code, various classes and libraries and understood it. After the completion, we can import the code and use it in other software like WebGL etc.
Why Me?
I am very interested in programming and very enthusiastic about contributing in open source community. Graphics is the one particular field that interests me a lot, I have a passion toward graphics and if I am given with the opportunity , even after the submission of project I would love to contribute in more projects for the community. I have already started working on this project and also in touch with project mentors. Also I can come up with new ideas and love to solve some real world problems. I will apply my full potential in doing the project, submitting every patch before deadline.I like OpenGL and like to use software for rendering 2d and 3d model designing so I know what are the things that user wants while using them.