- pure c++ 11 implementation
- left-hand z-up coordinate system
- software-rasterizer
- perspective-correct interpolation
- z-buffer (reverse-z tech / z-test / z-write)
- back culling / frustum culling / viewport clip
- support wavefront .obj file
- physically-based-shading with ibl
- bilinear / trilinear texture sample
- cube map sample
- reinhard toon-mapping
generate ibl textures from an environment cubemap
- indirect diffuse lighting
- precompute indirect diffuse lighting stored in an irradiance map from a radiance map(environment cubemap)
generate_irradiance_map("./resource/ibl_textures/env.png", "./resource/ibl_textures/irradiance.png");
- indirect specular lighting
- Split Sum Approximation, result in two part
generate_prefilter_envmap("./resource/ibl_textures/env.png", "./resource/ibl_textures/prefilter"); generate_BRDF_LUT("./resource/brdf_lut.png");
depth buffer |
---|
direct lighting only |
---|
with ibl |
---|
standard pbr with ibl |
---|