In this post, Volume Tiled Forward Shading rendering is described. Volume Tiled Forward Shading is based on Tiled and Clustered Forward Shading described by Ola Olsson et. al. . Similar to Clustered Shading, Volume Tiled Forward Shading builds a 3D grid of volume tiles (clusters) and assigns the lights in the scene to the volumes tiles. Only the lights that are intersecting with the volume tile for the current pixel need to be considered during shading. By sorting the lights into volume tiles, the performance of the shading stage can be greatly improved. By building a Bounding Volume Hierarchy (BVH) over the lights in the scene, the performance of the light assignment to tiles phase can also be improved. The Volume Tiled Forward Shading technique combined with the BVH optimization allows for millions of light sources to be active in the scene.
In this article, I will introduce the reader to the Physics system used in the Unity game engine. First, I will introduce the Physic Material Asset that is used to define physics properties for collider surfaces. I will also introduce Colliders and talk about the different kinds of Collider types you can create. The Rigidbody component is absolutely essential for performing physics simulations on GameObjects. I will show you how you can create a Rigidbody GameObject that can be user controlled. I will also talk about the Character Controller component that is provided by Unity to control upright characters. And finally, I will introduce the different Joints that are available in Unity.
In this article, I will introduce the reader to the different rendering components in Unity. I will introduce the Camera component as well as the different lighting components that are available. I will also talk about materials in Unity and introduce you to a few of the shaders that are available. And finally, I will also introduce light-mapping in Unity.
In this article, I will introduce you to scripting in Unity 3.5. Unity is a powerful game editor that only limits you to what you can imagine. Scripting is where the magic happens which will bring your games to life. I assume the reader is familiar the Unity interface, if not you can refer to my previous article titled Introduction to Unity (https://www.3dgep.com/?p=3246).
In this article I will demonstrate how to implement a basic lighting model using the Cg shader language. If you are unfamiliar with using Cg in your own applications, then please refer to my previous article titled Introduction to Shader Programming with Cg 3.1.
This article is an updated version of the previous article titled Transformation and Lighting in Cg. In this article, I will not use any deprecated features of OpenGL. I will only use the core OpenGL 3.1 API.
In this article, I will show how to implement projective shadow mapping in OpenGL using Cg shaders.
The basis of this post comes from the article titled [Transformation and Lighting in Cg]. I will assume the reader has a basic understanding of OpenGL and already knows how to setup an application that uses OpenGL. If you require a refresher on setting up an application using OpenGL, you can refer to my previous article titled [Introduction to OpenGL for Game Programmers].
I will take advantage of a few OpenGL extensions such as GL_ARB_framebuffer_object to create a offscreen framebuffer to render to and and GL_ARB_texture_border_clamp for clamping to the border color of the projective textures.
In this article, I will discuss a technique called normal mapping. Normal mapping is a shader technique that encodes pre-computed surface normals in a texture that can be used to add extra detail to a surface without the requirement of adding extra geometry. Before reading this article, you should have a basic understanding of OpenGL and you should know how to setup a Cg shader. For a review on OpenGL, you can refer to my previous article titled [Introduction to OpenGL for Game Programmers] and to learn how to incorporate Cg shaders in your own applications, you can refer to my article titled [Introduction to Cg Runtime with OpenGL].