![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软渲染引擎(SoftRasterizer)的实现
带帯大师兄
图形编程,C++,UE4/UE5,Directx11/Directx12/Vulkan
展开
-
软渲染器五之win32环境下如何绘制像素
win32下 如何绘制像素,也许到你看到这个问题的时候会马上想到win32的绘制像素函数SetPixel(),如果SetPixel函数来做这个软件渲染器的话,那运行效率将低的可怜,假设我们的视口屏幕为800X600的分辨率,也就是屏幕上有800X600个(48万个)像素点,也就是绘制整个屏幕的像素你得至少调用48W次SetPixel函数,那将是多么低的效率。有一种更高效的方法,就是定义一个缓存,然...原创 2016-11-30 23:08:41 · 1949 阅读 · 0 评论 -
软渲染器(Directx11)一之向量,顶点,矩阵
最近我完成了一个3D软件光栅器,也就是用CPU运行的小型3D渲染引擎,下面我就分为几个章节分别说下我实现的思路 一,向量,顶点,矩阵的表示。(1) 向量,顶点通常我们的向量和顶点都是用(x,y,z)表示,但是在3D图形学里,我们用(x,y,z,w)表示,那么在3D图形学里顶点和向量有什么区别呢? 在3D图形学里,顶点(Vertex)用(x,y,z,1.0)表示,而向量用(x...原创 2016-11-29 21:45:53 · 1428 阅读 · 0 评论 -
软渲染器(Directx11)二之3D渲染流水线的设计和坐标系的选择
我的这个3D渲染器是模仿D3D11的流水线的,不过我的渲染器是固定渲染流水线的。 3D渲染流水线我的流水线如下所示: 放出我的渲染函数代码,跟上面流水线图(没给出具体的实现细节)差不多:void UpdateScene(){ //进行输入的更新 InputUpdate(); //赋予顶点缓存数据 PointList_Mem = Po...原创 2016-11-29 22:24:45 · 1346 阅读 · 0 评论 -
软渲染器(Directx11)四之从相机空间到视平面的坐标变换
空间变化从上一篇技术博客 软件光栅器三之世界矩阵,相机变换矩阵,透视投影矩阵,透视除法,视口变换矩阵 我们直接给出了各大变换矩阵的表示形式以及实现的代码这一节博客 我将讲述从一个顶点从相机空间到到视平面的坐标变化过程,理解这个过程坐标值大小的范围对于实现ShadowMap,ProjectiveTexture,Pick技术来说至关重要。当然我还是省略掉大量详细的推导过程,只是给出结...原创 2016-11-30 22:28:18 · 1611 阅读 · 0 评论 -
软渲染器六之透视纹理映射
我的软件渲染器博客系列的第五篇才讲到win32如何实现像素的绘制,第六篇就直接讲关于透视纹理映射的,这也可能是本系列的最后一篇了,其实整个3D渲染器我用2500多行代码实现,在看本篇博客前我假设你已经有下面的基础了: (1)三角形的光栅化,如果不懂请参见<3D游戏编程大师技巧下册>的9.4小节 (2)uv的插值,仿射纹理映射,如果不懂请参见<3D游...原创 2016-12-01 01:39:16 · 2469 阅读 · 0 评论 -
软渲染器(Directx11)三之世界矩阵,相机变换矩阵,透视投影矩阵,透视除法,视口变换矩阵
其实各大矩阵具体的推导过程我就不给出了,我直接给出矩阵具体的形式和实现代码,以及那些大牛推导矩阵详细的文章: 一,世界矩阵(WorldMatrix) 我一般称世界矩阵为SRT矩阵,SRT分别是"Scale","rotate","translate"三个单词的缩写,也就是世界矩阵由缩放矩阵,旋转矩阵,平移矩阵构成的 (1)缩放矩阵(ScaleMatrix)假设在X轴...原创 2016-11-30 02:10:10 · 3083 阅读 · 0 评论