Posts

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

All In Rust

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

featured.png

Camera

关于相机的一些基础

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版本是不会记录内存分配的状态的。一般情况下,这种错误的根本原因是修改了分配出来的内存的范围之外的部分,也就是越界修改。