I’ve been writting a little Vulkan framework called Brokkr and a few example applications using the framework. You can check out the code here.
Linear Algebra for Computer Graphics 101
What is a vector?
A vector is an element of a vector space. Not very helpful is it? This leads to the next question which is… Continue reading
Structure and Interpretation of Computer Programs. Notes
I’ve been studying this fantastic textbook from Harold Abelson and Gerald Jay Sussman, the creators of the Scheme language. These are some notes I’ve been taking along the way: Continue reading
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
Ray tracer updates
Some updates. Added area lights ( note nice soft shadows ) and a physically based shading model (normalized blinn-phong) for evaluating direct lighting. As you can see in the video, the renderer uses progressive refinement so the scene can be rendered in real-time.
Stochastic ray tracing
Added diffuse interreflections and glossy reflections using stochastic ray tracing.
Now I’ll need to filter images to reduce noise…Probably going to try this