Posts

GDC 2017 Links

PresentationsB-rep for Triangle Meshes - Gino van den BergenCold, Hard Cache, Insomniac Games’ Cache Simulator - Andreas FredrikssonImproving Texture Compression in Games - Stephanie HurlburtInsomniac’s Web Tools (a postmortem) - Andreas FredrikssonScriptable Render Pipeline - Aras Pranckevičius VideosAmazon Lumberyard: "Lost" DemoAmazon Lumberyard:"Bistro" Demo

Radius of a Projected Sphere

Image
It's useful to calculate sphere projection in clip space. One usage is to determine LOD of a model. As you might have known, sphere projection results in ellipse instead of sphere. In this post, a way to approximate radius of projected sphere is given.

Assume the sphere is in the center of the screen and we know the \(FOV\) of the camera, sphere radius \(r\) and distance from camera \(z\). Looking at the diagram below:


The approximate projection of sphere radius in clip space is given by:

$$ approx\_projected\_radius = \frac{y}{y_{max}} = \frac{r}{z \times \tan (\frac{FOV}{2})} $$


GDC 2016 Links

DirectX 12 FAQ

Image
Windows 10 is here! I wanted to document all issues that I encounter when trying to develop with DirectX12.

Q: What do I need to try out DirectX 12?
A: Windows 10, Windows 10 SDK (DirectX 12 is part of SDK), Graphics Driver that supports WDDM 2.0.

Q: Where do I download DirectX 12 SDK?
A: DirectX 12 SDK is part of Windows 10 SDK, so you should download that instead (Link).

Q: I installed Windows 10, however DirectX Diagnostic Tool doesn't show I have DirectX version 12?
A: DxDiag shows the feature level supported instead of the DirectX version. You can still develop with DirectX 12 API, however, your feature level is limited to that.



Q: I installed Windows 10, DirectX 12 and latest graphics driver, however, when running the graphics samples, it crashed in D3D12CreateDevice
A: Note that DirectX 12 requires graphics driver that support WDDM 2.0. At this time of writing (Aug 9, 2015), not all graphics drivers support all graphics cards with WDDM 2.0. For example, Radeon HD 7500 only supp…

GDC 2015 Links

Here are [growing] links to GDC 2015 slides/presentations:

Update: GDC Vault for GDC 2015 is now up! 
Programming TrackKhronos Group (Link)Khronos OpenCL GDCKhronos Vulkan GDCValve Vulkan Session GDCLive Stream of Vulkan Session (Youtube)The Future of High-Performance GraphicsVirtual RealityVR Direct: How NVIDIA Technology is Improving the VR Experience (pptxpdf) - Nathan Reed, Dean BeelerAdvanced VR Rendering - Alex VlachosFar Cry 4Fast Iteration for Far Cry 4 - Optimizing Key Parts of Dunia Pipeline - Remi QueninRendering the World of Far Cry 4 - Stephen McAuleyAdaptive Virtual Texture Rendering in Far Cry 4 - Ka ChenMesh Cutting in Farming Simulator 15 - Gino van den BergenAdvanced Visual Effects in 2D Games - Viktor LidholtGreat Management of Technical Leads - Mike ActonCode Clinic: How to Write Code the Compiler Can Actually Optimize - Mike ActonParallelizing the Naughty Dog Engine Using Fibers - Christian GyrlingUnity 5 Graphics Smörgåsbord (slide+notes) -  Aras PranckevičiusTh…

DirectX11 - Development INF

Welcome to the first Development INF (stands for information)! Basically for each Development INF article, I will be listing the road blocks, gotchas, tips and tricks that I found during development; in this case DirectX11.

1. DirectX11 is part of WindowsSDK For old time DirectX developers, we usually had to install DirectX SDK. However, starting Windows 8, Microsoft has included the SDK to Windows 8 SDK. Consequently, this creates compile issues as some projects are still referencing the old DirectX path.

In Visual Studio, we usually use $(DXSDK_DIR)\Include and $(DXSDK_DIR)\Lib to locate the headers and lib, however, this will be no longer the case. The headers should be in $(WindowsSDK_IncludePath) and lib in $(WindowsSdkDir)\lib\x64.
2. D3DX11 library is deprecated D3DX11 Library is Deprecated, we should no longer include d3dx11.h header and no longer use D3DX11* functions. We need to find the replacement for each function.

3. DirectXMath replaces XNAMath
//#include <xnamath.h> …

Lighting Theory: Radiometry and Photometry

Recent games have been heading towards Physically Based Rendering and this requires a solid understanding on lighting theory more than ever before. This time, I'm posting my note on Radiometry and Photometry.
RadiometryRadiometry is basically ideas + mathematical tools to describe light propagation + reflection. Radiative Transfer is a study of transfer of radiant energy (which operates on geometric optics level - macroscopic properties of light suffice to describe how light interacts with objects much larger than light's wavelength).

Four Radiometric Quantities:

1. Flux (Radiant Flux/Power) - total amount of energy passing through a surface or region of space per unit time (J/s or Watt). Total emission from light sources is generally described in terms of flux.
2. Irradiance (E) - area density of flux arriving at a surface (Watt/m2)
Radiant Exitance (M) - area density of flux leaving a surface (Watt/m2)
3. Radiant Intensity (I)- flux density per solid angle (Watt/sr)
4. Radiance…