Radiometry for CG

Radiometry is at the core of practically every rendering algorithm out there. Each pixel in the frame buffer is just a small surface on which light reflected by objects in the scene falls onto. The unique goal of a rendering algorithm is to compute the amount of light passing through every pixel in the frame buffer. For this reason, I think it is important to have, at least, a basic understanding of some of the concepts studied by radiometry. I’ve written this article basically as a reference for myself, but, hopefully, others might find it useful although this stuff is well covered in any good computer graphics text. Continue reading

MultiDrawIndirect

One of the most interesting extensions in modern OpenGL is indirect drawing commands and MultiDrawIndirect in particular. Before explaining this extension lets review first drawing commands in OpenGL to have the background to better understand how MultiDrawIndirect works. If you already know about the different drawing commands in OpenGL please skip next two sections. Continue reading

DALi 3D Engine

Early this month took place the “Tizen Developer Conference 2014” in San Francisco. This year, DALi 3D Engine was presented. DALi 3D is an open source 3D engine and UI toolkit, developed by Samsung, which is part of the Tizen Native Framework. You can check out the slides for the presentation¬†here. I joined DALi team on January this year so I have not contributed to it very much so far but I would like to congratulate all my colleagues for the amazing work.

Array Textures

Another useful extension which, in fact, as been in OpenGL since version 3.0 is Array Textures. Array textures allows to batch across texture changes by packing multiple textures into arrays. This way you can batch together objects using different textures reducing the number of state changes and draw calls ( more on the later in the next article about MultiDrawIndirect ). Basically, using array textures, you can load up several 1D, 2D or cubemap images into a single texture object. Continue reading

Persistent mapped buffers

There has been lots of discussion lately on OpenGL with the advent of the next-gen low level APIs like Mantle, Metal and DirectX 12. These low level APIs promise better performance by a design which maps better to the hardware (that’s why they are low-level). I’m not going to talk about that in this article, there are a lot of good resources like: Continue reading