Skip to content

Khasehemwy/SoftwareRenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SoftwareRenderer3D

3D软件渲染器。
不借助外部库,仅使用C++标准库而制作的3D软渲染器。

(Windows平台需要使用WinAPI)
(模型导入需要assimp库)

博客:

软渲染器记录

功能:

光栅化:

  • 线框绘制(顶点着色器和几何着色器) - Wireframe drawing (Vertex Shader and Geometry shader)
  • 片段着色器(像素着色器) - Fragment Shader (Pixel Shader)
  • 高洛德着色 - Gouraud Shading
  • 冯氏着色 - Phong Shading

光线追踪:

  • Whitted-Style光线追踪 - Whitted-Style
  • PBR光线追踪 - Physically Based Rendering
  • 全局光照 - Global Illumination

光照:

  • 光照: (Lighting)
    • 高洛德着色 - Gouraud Shading
    • 冯氏着色 - Phong Shading
    • 环境光照 + 漫反射光照 + 镜面光照 - Ambient light + Diffuse light + Specular lighting
    • 定向光源 + 点光源 + 聚光源 - Directional light + Point light + Spotlight
    • 多光源 - Multiple light source
  • 阴影 - Shadow

纹理:

  • 仿射/透视纹理映射 - Affine texture mapping
  • 双线性滤波 - Bilinear filtering

优化:

  • 背面剔除 - Back culling
  • 透视修正 - Perspective correction
  • 深度缓存(1/z) - Depth buffer(1/z-buffer)
  • 简单CVV裁剪 - Canonical View Volume Clip
  • 水平裁剪,垂直裁剪 - Horizontal Clip and Vertical Clip

外部导入

  • 外部3D模型导入

展示:

高洛德着色

冯氏着色 (GIF左侧是帧率,很明显冯氏着色慢一些)

基于高洛德着色的阴影

基于冯氏着色的阴影

光栅化(无阴影)

光追(Whitted-Style)

光追(Whitted-Style),添加全局光照Trick(右侧方块有部分蓝色反光)

光追(PBR),4深度,4采样点

光追(PBR),16深度,2048采样点