DDA DDA算法作为图形学当中最基本的方法,应用很多。除了光栅化画直线以外,还可以应用到各处场景。比如分块体绘制,光线追踪的加速,以及一些特殊的渲染技巧上。
DDA所完成的工作就是给定一个在均匀(也可以是非均匀,但我们先讨论均匀)网格(Grid)中的射线,求出这个射线和每一个格子(Cell)的交点坐标。
如果把坐标取整,就能得到格子的坐标,那么就可以用直线的光栅化实现。
如果把Cell看作包围盒,那么就可以进行空间区域的快速,作为光线追踪的加速结构,虽然这个加速结构很简单,但是对于有大量求交物体的场景加速效果还是很客观的。
如果我们取每个Cell的入射交点和出射交点,可以用作分块的体绘制加速结构。
最简单的,也可以判断基于网格的迷宫的墙壁,Wolfenstein3D这款诞生于1992年的游戏就是用这种方法绘制出来的。
Posts
All About Translation
关于图形学中的三维变换的一些个人总结

All In Rust
这篇文章通过一些C++和Rust代码片段做对比,对Rust核心特点进行快速介绍。适合熟悉C/C++并且不熟悉Rust的读者,并且帮助他们快速熟悉Rust的特点。注意,这篇文章不能让你学会写Rust,只是帮助你快速理解Rust的一些特性。

Camera
关于相机的一些基础
DiligentEngine 源码解析
DiligentEngine是我最喜欢的一个底层图形库,代码质量上乘,组织清晰。历史包袱小。
MagicaVxoel的编辑模式的体素绘制实现
MagicaVoxel是一个小巧的体素建模工具(以下简称MV),主要是用来制作一些原画或者概念图。由于MV没有开源,这篇文章主要猜想一下MagicaVoxel的编辑视图部分是如何高效绘制体素的。
Quake2 源码解析
最近看了一下Quake2 的源码,并且重构了yquake2的构建方式,使它符合自己的口味。
Vulkan 入门
(由于这些文章是从之前的docisfy中迁移到hugo中的,所以暂时不支持mermaid建模描述语言)
XV6的学习笔记
6.s081 已经完成
在做6.s081课程实验时不明白的问题先记录下来:
从include到import
这次在GTest中遇到一个Bug,new出来的对象被析构掉的时候出现了堆损坏(HEAP CORRUPTION)的异常。这种错误只会在Debug上出现,因为Relase版本是不会记录内存分配的状态的。一般情况下,这种错误的根本原因是修改了分配出来的内存的范围之外的部分,也就是越界修改。