共计 10 篇文章

Java软光栅渲染器-深度缓冲

目标 深度缓冲(Depth Buffer)又称Z缓冲区,是一个与渲染目标有相同大小的缓冲,这个缓冲记录每个像素的深度。深度缓冲的目的在于正确地生成通常的深度感知效果:较近的物体遮挡较远的物体。 像素的深度值是由视矩阵和投影矩阵决定的。在近裁平面上的像素深度值为0,在远裁平面上的像素的深度值为1。假设摄像机在原点,那么深度值越小的离摄像机越近。 本文的目标就是实现深度缓冲。 参考资料: Alpha/Transparency Sorting, Your ...

Java软光栅渲染器-光栅化3D三角形

目标 光栅化3D顶点 光栅化3D线段 光栅化3D线框三角形 光栅化3D实心三角形 实现顶点线性插值 实现 本章主要实现SoftwareRaster中对基本形状的光栅化。 计算空间变换矩阵 Renderer中定义了诸多空间变换矩阵,在渲染之前先要把它们初始化。 private Matrix4f worldMatrix = new Matrix4f(); private Matrix4f viewMatrix = new ...

Java软光栅渲染器-3D图形渲染管线

目标 3D图形渲染管线,或者简称渲染管线,网上有非常非常多的资料,凡是与3D图形有关的书籍也会专门介绍。下面是一些参考资料: 《3D数学技术:图形与游戏开发》第15.1节“图形管道概述”。 《Real Time Rendering》第二章 图形渲染管线 浅谈 GPU图形固定渲染管线 3D图形渲染管线 可编程渲染管线比固定管线的优势在哪? ...

Java软光栅渲染器-背面消隐

目标 将三角网格的背面(看不见的部分)剔除掉。 参考:从零实现3D图像引擎:(14)背面消隐的三大陷阱 实现 变换到观察空间 首先,进行背面消隐时,先要使用 WorldMatrix 和 ViewMatrix 将三维向量转换到观察空间。此时摄像机的位置即是原点,三角形的顶点向量就等同于观察的方向向量。 修改一下Mesh类的render方法: ...