Hello Dr. Vijay D. Gokhale Sir’s Past, Present and Future Students,
• We, on the behalf of AstroMediComp welcome you to the new OpenGL tab. In this tab we shall describe the rationale behind it’s existence and give overview of what OpenGL and more generally Real Time Rendering is.
• Dr. Vijay D. Gokhale sir has programmed and is programming extensively on all conceivable forms. After taking even a glance at hardware, operating system platforms he has worked upon, SDK’s he has mastered, and has done projects in, only one phrase comes to the mind, “OMNIPRESENT PROGRAMMER”. Full spectrum of technologies he has handled can be viewed at Here.
• Navigating through such a huge canvas, it would seem hard to pick one technology that is very close sir’s heart. However, it can be said without any shred of doubt that “Real Time Rendering” with OpenGL, OpenGL ES, WebGL, Direct X, Metal, and Vulkan along with “GPGPU” technologies such as CUDA, OpenCL , and C++ AMP, are sir’s FLAGSHIP TECHNOLOGIES.
• It is sir’s most cherished desire as a teacher that his students should dig into these core technologies and establish a software company having their foundation. It will be his legacy in true sense. Sir has voluntarily committed himself to stand behind anybody who is sincerely working in this direction. Sir’s entire career as a teacher is defined and characterized by the fact that he has continuously mastered newer, core and difficult technologies on his own and then has presented them in most accessible and in most joyful manner to his students, without sacrificing the rigour involved. His most cherished technologies cannot be exception to it. This tab is precisely about it. To offer you an overview of what Real Time Rendering + GPGPU as technologies are all about and Dr. Vijay D. Gokhale sir’s initiatives through AstroMedicomp towards spreading awareness about the same.
What is OpenGL? What is Real Time Rendering? What is GPGPU?
• OpenGL is a considerable low level API for talking directly to the Graphics Card/Graphics Processor Unit (GPU) to create stunning 2D and 3D Computer Graphics/Digital Image Processing/Visual Effects/Visual Simulations like applications to render real time/real world/movie quality images. [ Same definition goes for Direct3D and upcoming Vulkan ]OpenGL is an online rendering technology to render 2D/3D images on raster output device like monitor.
• What you can do after learning OpenGL?
Using OpenGL like offline/online rendering technology, you can programmatically :
- Create Any/all 3D games.
- Create AutoCAD/3DS-Max/Maya/Cinema4D/Z-Brush/Blender like Content Creation softwares.
- Create Star Wars/Jurassic Park/Terminator/Avatar/LOTR/HP/TRON/Avengers movies special effects.
- Create any/all types of real time 2D/3D animations.
- Create Creative Visualisations that we saw in TV/Movie/Web advertisements.
- Create Scientific Visualisations in Medical /Pharmaceutical/Astronomical /Molecular /Automobile etc.
- Create any/all Computer Graphics related implementation.
- Create any/all Digital Image Processing related implementations.
- Creating any/all above on any iOS or Android Mobile/Pad by using OpenGL-ES.
- Creating any/all above on any Javascript Enabled web browser by using WebGL.
- etc.
• What is Real Time Rendering?
◦ Rendering in general can be split in two major categories, (A) offline rendering, and (B) Real Time (online) rendering. Real Time Rendering constructs the images of 3D geometry (or scene) PROGRAMMATICALLY, in real time i.e. as program runs. Therefore, while watching the demos of real time rendering one should always keep in mind, that it is an output of a running program, however, realistic (kind of video shoot) it seems. Offline rendering refers to anything where 3D objects or frames are pre-rendered, subsequently written to an image format, and then displayed either in the form of still image or as a video (video being a sequence of still images shown in a rapid manner).
◦ OpenGL, OpenGL ES, WebGL, Direct3D, Metal, Vulkan are libraries on various operating system platforms that allow programmer to perform ‘REAL TIME RENDERING’.
• What is GPGPU?
◦ Advances in graphics processing unit (GPU or graphics card/video card) have made it possible to add more and more realism and aesthetics to both real and off-line rendering. In most fundamental sense we can measure the capacity, performance, throughput of GPU in terms of number of floating point operations it can execute per second. This number is in billions now. The recent GPUs typically host thousands of floating point computing units (much like we have multiple cores on a single CPU chip). Therefore, their floating point processing capacity dwarfs even the fastest of CPU.
◦ In early days, only programs related to real time or offline rendering were capable of harnessing this tremendous power. In other words, you may have a graphics card, but only applications related to rendering could use it programmatically, not otherwise! Apart from computer graphics there are several other disciplines, most notably some finance related softwards, data science, data mining, machine learning that sorely need such kind of computing throughput. GPU vendors (Companies manufacturing GPU’s e.g. nVidia/ATI/Intel) understood this need and made necessary to changes to hardware and software stack to make power of GPU available for GENERAL PURPOSE COMPUTING. Technologies like nVidia’s CUDA, Apple + AMDS’s OpenCL, and Microsoft’s C++ AMP allow you to use parallelism offered by graphics card for general purpose computing.
◦ After having said this, we must mention that although it is possible to apply GPU computing for general purpose domains without knowledge of computer graphics, thanks to GPGPU technologies, it is certainly unintuitive. The programmers aware of computer graphics will always be able to harness the power of GPU in most efficient and optimized way. In fact when one starts stretching GPU to it’s limit via computer graphics computation (which itself is a tall order) only then one (should!) venture into GPGPU.
EPILOGUE
In aforementioned paragraphs, we have taken a bird’s eye view (which ironically digs fairly deep in our case) of real time rendering and GPGPU. If this description has stimulated your curiocity (we certainly hope, it has!) then do browse other sections of this tab to find out more. Feel free to contact our admin and mentor, should the need arise!
Happy Coding!