cdc's world
08
10
路径追踪,蒙特卡洛积分方法推导 路径追踪,蒙特卡洛积分方法推导
Path Tracing路径追踪的提出就是为了去解渲染方程的积分项,并且它不是一个准确积分,只是用一种近似的方法去得到近似的积分数值解,它采用了概率论的一些思想,使多次采样的均值去得到一个近似的积分值。 正常情况下求解一个定积分需要去找它的
2020-08-10 cdc
06
01
造一个PBR轮子 造一个PBR轮子
PBR理论完全理解了PBR之后就感觉发明出来这个东西的人真的是天才,之前广泛应用的Blinn-Phone仅仅只是经验总结的光照模型,并不是物理上的准确。PBR的思路就是完全按照渲染方程来进行光照的计算,然后用贴图对BRDF的DFG项进行控制
2020-06-01 cdc
04
20
混合&面剔除 混合&面剔除
混合混合主要用来做透明度,一个物体透明的意思其实就是它显示出来的颜色一部分由它自己的颜色提供,另一部分由它后面的颜色提供,我们通过对纹理的alpha值进行设置,就可以做出透明效果。 丢弃片段有些图片并不需要半透明,只需要根据纹理颜色值,显示
2020-04-20 cdc
19
实例化(高效绘制大量物体) 实例化(高效绘制大量物体)
实例化在之前我们绘制多个物体都是用for循环去实现,在每个循环里面单独绑定VAO,但是这样的做法会特别消耗性能。使用glDrawArrays或glDrawElements函数告诉GPU去绘制顶点数据会消耗更多的性能,因为OpenGL在绘制顶
2020-04-19 cdc
13
Unity屏幕特效知识总结 Unity屏幕特效知识总结
屏幕后处理特效最近看了看Unity一种专门的Shader类别,Image Effect,一般有两种:GrabPass和Post-Processing GrabPass用来抓取物体所在屏幕位置的渲染图像,然后把这张Texture传递给接下来的
2020-04-13 cdc
11
立方体贴图 立方体贴图
立方体贴图立方体贴图其实就是一个包含了六个纹理的纹理,我们所有生成和绑定纹理的操作都是一样的,唯一不同的就是当我们把纹理加载到GPU时需要用一个循环去加载六个纹理。对于skybox的顶点着色器和片段着色器: 1234567891011121
2020-04-11 cdc
03
深度测试和模板测试 深度测试和模板测试
深度测试现在我们来到了一个非常重要的专题:深度测试,它关乎着渲染过程中所有的遮挡关系,之前在画箱子的时候我们就开启了深度测试,下面来更加深入地学习深度缓冲中的深度值。 深度缓冲存在每一个片段中,当开启了深度测试后glEnable(GL_DE
2020-04-03 cdc
03
27
OpenGL学习记录:光照 OpenGL学习记录:光照
光照篇终于是来到了光照篇,这一章会比上一章更加复杂一些,代码量也会增加很多,屏住呼吸,我们一起踏上旅程吧~~~! 首先我们要对之前的代码做一些修改,之前加载纹理的代码写得太丑了,我们这里把它写成一个加载、生成纹理的方法: 123456789
2020-03-27 cdc
19
OpenGL学习记录--入门章节 OpenGL学习记录--入门章节
窗口创建和初始化  在开启窗口之前,需要先初始化GLFW,用glfwWindowHint()函数去指定使用的OpenGL的版本号,还需要告诉GLFW使用的核心模式。实例化窗口之后用glfwMakeContextCurrent()去把当前窗口
2020-03-19 cdc
03
对渲染管线空间变换的理解 对渲染管线空间变换的理解
Space Transform刚刚踏进图形学的大门,记录一下我对于空间变换的理解。为了把3D世界里的各种数据变换到一张2D的图像上,先辈提出了渲染管线这个东西,它会依次地进行空间变换,最终把物体的顶点数据变换到设备的显示器上。 这张图
2020-03-03 cdc