
OpenGL
文章平均质量分 93
天生爱打工
汗流浃背了吧老弟
展开
-
[OpenGL] opengl切线空间
对于法线贴图来说,我们知道它就是一个2D的颜色纹理,根据rgb来映射法线对应的xyz,从而达到在同一个平面上有多个不同方向法线的效果,这样就能根据光照的计算结果不同,从而得到凹凸不平(或者说更加细节)的平面。原创 2024-05-25 15:42:44 · 833 阅读 · 0 评论 -
[OpenGL] 法线贴图
如下图所示: 左边第一个是传入了上百万的顶点坐标实现的效果,而最中间的是传入了500个顶点实现的效果,最后一个是在中间的基础上运用的法线贴图实现的效果,他们的效果几乎是一样的。我们知道不是所有的物体表面都是光滑平整的平面,比如我么要绘制一个人脸,但人脸会由,头发,五官,甚至是微表情等组成这些都是具有凹凸感的,那我们该如何体现出这种凹凸感呢?原创 2024-05-23 15:31:57 · 1331 阅读 · 1 评论 -
[OpenGL] 点光源PCF柔和阴影
PCF允许通过采样片段位置周围的多个样本并平均结果来平滑(软化)这些锯齿状边缘。原创 2024-05-16 16:51:14 · 399 阅读 · 0 评论 -
[OpenGL] 点光源阴影(万向阴影贴图)
由于点光源是一个点向四周发散的光线,所以这将导致点光源会以不同的角度到达场景中的不同表面,造成近大远小的效果,所以要采用透视投影矩阵来处理点光源的阴影,透视投影能够正确反映这种随着距离增加而大小和亮度逐渐变化的现象。原创 2024-05-15 17:11:25 · 1265 阅读 · 0 评论 -
[OpenGL] PCF 柔和阴影
PCF通过在每个像素周围进行多次样本采样,并对这些样本进行平均来实现阴影边界的模糊效果,从而平滑阴影的边缘,避免了由于阴影贴图分辨率限制导致的硬阴影边缘。所有的周围像素的结果结合在一起,进行平均化,我们就得到了柔和阴影。原创 2024-05-13 16:19:24 · 769 阅读 · 0 评论 -
[OpenGL高级光照] 阴影改善
实现了阴影效果之后,但是我们会发现阴影效果中地面上的阴影明显显示有问题。原创 2024-05-12 19:11:41 · 942 阅读 · 0 评论 -
[openGL] 高级光照-Gamma矫正与衰减
对于经过Gamma校验后中间色调(尤其是暗部)实际显示出来的亮度低于它们应有的线性亮度。图像的整体亮度相比于未校正时会显得更亮,尤其是在中间色调和暗部区域。可能你会敏锐的发现,为什么上面的图片未校验的反而更亮呢?试想一下我们未校验使用的纹理是不是没有经过处理,也就是说他的纹理颜色是位于sRGB空间中的,而我们并没有对他进行压缩(或者说逆Gamma处理),所以它输出的肯定会更亮,如果尝试在渲染时对(校正和不校正)使用同一个纹理,那么Gamma校验后的效果肯定定更亮。原创 2024-04-19 17:38:05 · 854 阅读 · 0 评论 -
[openGL] 高级光照-Gamma矫正
在了解Gamma之前我们应该先知道一种物理特性: 输出亮度 = 输入电压 的 2.2次方幂监视器这个经过2.2次方幂处理过后就相当于是一种压缩处理(可以理解为将图片变暗了至于为什么要这样处理将图片变暗,这将在后面进行说明,当然理解为压缩处理是不对的,但后面会修正。)\,每种显示设备的这个值都不一样,但是大多数都是2.2,这个2.2就叫做监视器的Gamma。输出亮度 = 输入电压 ^ 2.2。原创 2024-04-17 16:52:25 · 1220 阅读 · 0 评论 -
[openGL] qt5版本+mingw编译Assimp库+调用
Assimp官网上已经停止更新截至在3.3.1版本,但是这个版本编译是最稳定的,较新的版本需要在github上下载编译我使用的CMAKE版本是: CMAKE 3.20.0 -->软件包名-->cmake-3.20.0-rc1-windows-x86_64.msiAssimp版本是 3.3.1--->原创 2024-03-25 13:25:54 · 1672 阅读 · 4 评论 -
[openGL] 高级openGL实现 -深度测试
线性深度缓冲这个公式需要一个Z值来计算他的深度值,比如当我们设置near为1,far为50时对应的关系就应该如下图所示:2.1非线性深度缓冲重要的是要记住这种方式的深度缓冲中的值在屏幕空间中不是线性的编辑深度值很大一部分是由很小的z值所决定的,这给了近处的物体很大的深度精度。这个(从观察者的视角)变换z值的方程是嵌入在投影矩阵中的,所以当我们想将一个顶点坐标从观察空间至裁剪空间的时候这个非线性方程就被应用了三原创 2024-03-23 14:13:07 · 1930 阅读 · 1 评论 -
【OpenGL】纹理
在OpenGL中文手册上扩展和补充,采用QT进行开发,原生C++版本教程,请点击此处参考OpenGL CN本章节源码请。原创 2024-03-06 18:44:32 · 1457 阅读 · 0 评论 -
[OpenGL] 着色器语言GLSL
GLSL(Graphics Library Shader Language))是一种类C语言,它是一种为OpenGL设计的编程语言,用于编写图形着色器程序。着色器是运行在图形处理器(GPU)上的小型程序,它们允许开发者对图形管线的各个阶段进行编程控制,以实现复杂的视觉效果和实时渲染功能。这里主要借鉴的openGL中文手册,唯一不同的是,测试示例和代码改成了Qt+OpenGL,而并非采用原生的C++版本的测试调用参考此处GLSL原生C++版本GLSL使用请点击此处。原创 2024-03-05 18:00:09 · 1367 阅读 · 1 评论