自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 个人DEMO

我的个人demo

2023-07-18 14:36:56 92 1

原创 gamma矫正

gamma矫正的来源要从CRT显示器说起,早期的CRT显示器他的亮度映射有一个特性,就是其输入电压与输出亮度并非成正比,而是有一个2.2-2.5的幂关系,即Y = X2.2,也就是下面这条线。那么再后来发展出了LUT(look up table)技术,这种技术能让输入的信号查表,得到计算好的值,这样就不用再每次计算了,这样可以加快刷新速度。之前其实看过gamma矫正相关信息,但是其内容并不自洽,我个人也十分困惑,直到我看到了高兴老师的文章,说的很清楚,豁然开朗,放到这里记录一下。

2023-03-31 14:32:58 205

原创 透视矩阵详解

在一开始我接触到透视矩阵的时候,很困惑,包括我在看games101的时候,透视矩阵的推理,并不能完全说服我,就是硬凑我的,让我从根本上理解这个透视矩阵到底在做什么,在自我学习的过程中,我翻阅了很多资料包括中对透视变换的论述,以及在games中的方法论述,我会发现这两者推出来的最终式子不同(最后搞清楚是约定的问题),就整的自己有点迷惑(可能是我脑子不太好使吧~~)现在开始,我会努力把这个矩阵,以及我为什么要搞出这个式子讲清楚。

2023-03-22 15:23:27 1568

原创 软光栅渲染器之坐标变换

从这里开始我基本上就是自己写自己的了在之前我们使用了正交投影以及简单的zbuffer渲染了一个这样的模型但是总感觉怪怪的,而且我们在写变换的时候也感觉有点不对劲,怎么直接就做这样一个变换呢?这是因为这个模型的坐标范围是[-1, 1]三维空间,我们直接导入的话,他就会在世界坐标的原点附近,这也刚好是在NDC空间(不过是右手系),之前的这个变换只是单纯用了一个正交变换并转换到屏幕空间,这样显式也正常,但是跟我们人眼看到的东西是不同的,我们现在看到的黑哥们没有透视效果(什么黑色深水王子~)

2023-03-21 21:37:56 101

原创 软光栅之纹理贴图

这里有个问题,我们的各项属性都是存在顶点上的,那么我们怎么计算每个光栅化后的片元当中的颜色属性呢?记得我们上一节判断点是否在三角形内的时候,会得到一个重心坐标,我们可以用这个重心坐标去计算片元纹理值;虽然是基于Tinyrenderer开始的项目,但是写了两章发现我自己就可以做了hh,就不顺着他的思路来了,所以也改了名字。上一节实现了深度测试,正确显示了人头模型,但是这个模型只有面片构成,并没有颜色,所以这次的任务是要引入纹理贴图。为此,我们需要更新model载入模型的文件,获取模型包括颜色的信息;

2023-03-21 20:17:21 148

原创 为什么<< >>运算符要友元重载

如果类内重载运算符时,如果是双目运算符,那么接收1个参数,左侧操作符就是对象自己。不符合使用习惯,并且无法实现链式使用。

2023-03-20 11:01:10 306

原创 c++ IO库

作为一个写了挺久代码的人,到现在也只会用cout,cin实在是感到惭愧,况且找工作考算法也会用到很多输入输出,所以就干脆把c++的IO操作整理一下。

2023-03-18 22:08:14 50

原创 深度测试详解

而问题在渲染单个复杂模型的情况下就暴露出来了,一般情况下我们无法对单个模型进行像素级别的渲染排序,(到光栅化这一步,画bounding box, 光栅化,着色,并不是排好序的,比如这里左下角先渲染)以下面的这个透明环状物体为例,最左侧部分的网格最先渲染,在开启深度写入的情形下,后面部分的网格就无法通过深度测试,结果被GPU剔除了。所以,我们必须关闭透明物体的深度写入,不过这样做实际上破坏了深度缓冲的工作机制,这带来了很大的副作用,为了让深度缓冲机制正常工作,我们就必须严格的控制物体的渲染顺序。

2023-03-17 19:46:14 1454

原创 图形学 - 法线矩阵

首先这个法线矩阵是干什么的呢?看起来貌似没什么问题,但是注意上面那句代码只有在模型没有经过非等比缩放才会正常工作,一旦模型经过非等比缩放,法线就会出现问题,在等比缩放时法线也会跟着一起缩放,我们只需要将其归一化即可,其实法线向量还是垂直于表面的,在早期版本的opengl中,在顶点着色器中有个内建的法线矩阵gl_NormalMatrix,因为GLSL1.4版本之后这个内建变量就被删除了,所以这个工作就需要我自己去做了,今天我们就来讨论这个法线矩阵的推导过程。其中T为三角面的切线向量,N为法线向量。

2023-03-17 19:39:54 159

原创 TinyRenderer之深度缓冲

我们上一次绘制的模型嘴巴部位很奇怪,他长这样因为模型渲染顺序的问题,即使我们做了个简易的背面剔除,但还是由嘴巴哪个地方的面不能被剔除,并且由于绘制顺序的原因,产生了错误的图像。所以我们需要在背面剔除之外有额外的方法来帮助我们表现出物体的遮挡远近关系。也就是zbuffer;提到zbuffer,我们需要从画家算法开始。

2023-03-17 19:29:44 73

原创 TinyRenderer之绘制三角形及flatshading

画一个三角形有多种方式,但究其本质,还是要去判断一个点是否在三角形内。

2023-03-17 19:05:32 81

原创 TinyRenderer之画线算法

tinyrenderer画线算法

2023-03-17 16:38:46 83

翻译 透视变换矩阵详解

详解透视投影中的投影变换矩阵

2023-03-17 15:28:24 1859

翻译 TinyRenderer之项目创建

tinyrenderer

2023-03-17 11:17:31 150

原创 第一次发文章-学习经历

图形学学习经历

2023-03-17 10:43:06 52

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除