Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

实验:实时光线投射与高级着色器 (Ray Casting & Blinn-Phong)

本项目基于 Taichi 编程语言实现了一个高性能的实时光线追踪渲染器。通过隐式几何求交算法,在不依赖外部模型的情况下,直接在 GPU/Vulkan 上驱动三维场景的生成。

  • 效果演示: 渲染效果

核心实现逻辑

1. 几何体隐式定义 (Geometry)

  • 红色球体: 利用球体方程 $(P-C)^2 = r^2$ 进行求交。圆心设为 (-1.2, -0.2, 0),半径 1.2。
  • 紫色圆锥: 顶点位于 (1.2, 1.2, 0),通过轴向投影与角度判定实现。底面高度限制在 y = -1.4,底面半径 1.2。

2. 深度测试与遮挡 (Z-buffer Logic)

  • 任务目标: 为每个像素发射射线,并计算所有几何体的交点距离 $t$
  • 实现: 核心代码实现了深度竞争逻辑。如果射线同时击中球体和圆锥,程序会自动选择最小的正数 $t$ 进行着色。这保证了当球体位于圆锥前方时,能产生正确的遮挡关系。

3. 着色模型升级 (Blinn-Phong Shader)

  • 模型实现: 实现了 Ambient(环境光)、Diffuse(漫反射)和 Specular(镜面高光)三部分。
  • 升级点: 使用半程向量 $athbf{H}$ (Halfway Vector) 替换了标准 Phong 模型中的反射向量 $athbf{R}$
  • 表现差异: Blinn-Phong 模型在大入射角下能产生更平滑、更符合物理直觉的高光边缘,避免了传统 Phong 模型的高光骤减问题。

4. 硬阴影效果 (Hard Shadow)

  • 原理: 引入了 Shadow Ray(暗影射线)。在击中点向光源方向进行二次投射。
  • 效果: 若射线在路径上被其他几何体遮挡,则该点仅接受环境光,产生了清晰的硬阴影边界。

UI 交互说明

通过左上角的交互面板,可以实时调整以下物理参数,观察材质变化:

  • Ka: 环境光强度系数 (默认 0.2)
  • Kd: 漫反射强度系数 (默认 0.7)
  • Ks: 镜面高光强度系数 (默认 0.5)
  • Shininess: 表面高亮指数 (1.0 - 128.0)

环境要求

  • Python 3.12+
  • Taichi 1.7.4 (Vulkan Backend)
  • 执行:uv run main.py

个人信息

  • 学号:202411081041
  • 姓名:许铭洋
  • 专业:计算机科学与技术

About

homework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages