AsyncPCG: General-purpose PCG solver for GPUs
PCG for Playstation 3
Yet Another BRDF Viewer
The program renders surfaces using an arbitrary BRDF. The key element of the program is the method for obtaining BRDF: BRDF is precomputed for a set of directions and the values are stored in a lookup table; four-dimensional table is used since an anisotropic BRDF is a function of four variables. Texel fetch from 4D-texture can be implemented using pixel shaders 1.4, thus it is actually possible to use arbitrarily complex BRDFs within the first shader model framework.
When an object is illuminated using an environment map (image-based lighting), prefiltered environment maps technique can be used to approximate correct reflections. The program can prefilter environment maps by approximating arbitrary BRDF as a series of cosine lobes.
In 2002, only a few GPUs supported pixel shaders 1.4; I have implemented a software renderer. Software renderer emulates pixel shaders, thus the resuting picture is identical to the one produced by hardware-accelerated renderer.
![]() |
![]() |
Pixel shader assembly language translator
There is no common way in OpenGL to program the hardware that supports only the first shader model (i.e. the hardware that does not support ARB_fragment_program). This tool converts DirectX 8/9 pixel shader assembly language into the C++ code that performs corresponding OpenGL states setup via IHV's propietary- or ARB-extensions. For example, consider this pixel shader written in assembly 1.4. The translator can generate corresponding ATI_fragment_shader code for ATI videocards (e.g. Radeon 8500), and ARB_fragment_program code for NVIDIA videocards.