LearnOpenGL脑图汇总
1.4 纹理 2.4光照贴图 4.1深度测试(Depth Testing) 4.2模版测试 4.3混合 5.1Blinn-Phong 5.3阴影映射 5.3.2点光源阴影 5.4法线贴图 5.7泛光 bloom 5.8延迟着色法 5.9SSAO.png 6.1PBR理论 6.2.1漫反射辐照度 6.2.2镜面反射 IBL 6.IBL总结 7.Computer Shader 8.骨骼动画 8.guest_2020_OIT
1.4 纹理 2.4光照贴图 4.1深度测试(Depth Testing) 4.2模版测试 4.3混合 5.1Blinn-Phong 5.3阴影映射 5.3.2点光源阴影 5.4法线贴图 5.7泛光 bloom 5.8延迟着色法 5.9SSAO.png 6.1PBR理论 6.2.1漫反射辐照度 6.2.2镜面反射 IBL 6.IBL总结 7.Computer Shader 8.骨骼动画 8.guest_2020_OIT
关于几何着色器 从 OpenGL 3.2 开始,在顶点着色器和片段着色器之间有第三种可选类型的着色器,称为几何着色器。该着色器具有使用顶点着色器的输出作为输入动态创建新几何体的独特能力。 几何着色器在渲染管道中的位置: 应用1:几何着色器生成Bézier曲线 Bézier曲线方程: 需要4个控制点: beziercurve.geom 应用二:几何着色器生成爆破物体 当我们说爆破一个物体时,我们并不是指要将宝贵的顶点集给炸掉,我们是要将每个三角形沿着法向量的方向移动一小段时间。效果就是,整个物体看起来像是沿着每个三角形的法线向量爆炸一样。 geom.gs 应用三:法向量可视化或生成毛发 Geom.gs Reference: https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/09%20Geometry%20Shader/ https://web.engr.oregonstate.edu/~mjb/cs519/Handouts/geometry_shaders.1pp.pdf
本文主要讲述如何使用现代OpenGL绘制一个完整的桥梁模型,包括箱梁、盖梁和桥墩,关于OpenGL方面,主要添加的shader,使用phong光照模型实现。 一、绘制箱梁 1.1 箱梁的的截面和坐标系 截面: 坐标系: 1.2 箱梁的顶点及其法向量 1.3箱梁的VAO、VBO 1.4绘制箱梁 二、绘制盖梁 2.1盖梁的顶点及其法向量 2.2盖梁的VAO、VBO 2.3绘制盖梁 三、绘制桥墩 3.1计算圆周上的点和法向量 3.2计算圆柱side和上圆形和下圆形 3.3桥墩的VAO、VBO 3.4绘制桥墩 四、着色器 4.1顶点着色器 4.2片段着色器 五、项目源代码 链接:https://pan.baidu.com/s/1EA2wd_Rooj-748uKAUugAw 提取码:3d51
本文主要介绍如何使用 C++ 生成圆柱几何体以及如何在 OpenGL 中绘制它。 1.绘制方法 由于我们无法绘制一个完美的圆形底面和圆柱体的弯曲侧面,我们只能通过将底面除以扇区(切片)来采样有限数量的点。因此,它在技术上是通过将这些采样点连接在一起来构建棱柱体。随着样本数量的增加,几何形状更接近于圆柱体。 假设一个圆柱体以原点为中心,半径为r,高度为h。圆柱体上的任意点 ( x, y, z ) 可以从具有相应扇形角θ的圆方程计算出来: 扇形角的范围是从 0 到 360 度。每个步骤的扇形角可以通过以下方式计算: 2.创建存放顶点向量和法向量的结构体: 3.计算圆周上的点 4.获取圆柱体侧面、顶面、底面的顶点和法向量 5.将顶点和法向量存入缓冲区 6.绘制圆柱体 7.删除缓冲区 8.效果 9.完整的项目源代码 https://pan.baidu.com/s/1cEUuAmY3JNUbt7sTNvTuyA 提取码:lf5q
概要 主要介绍使用OpenGL绘制一个立方体,并给立方体的六个面赋予不同的颜色,并使立方体可以自动旋转,也可以通过键盘按键A、D、W、S进行左、右、上、下移动。 1.使用GLM函数库(OpenGL Mathematics)进行立方体举矩阵的变换运算; 2.使用PVM矩阵进行坐标系变换。PVM矩阵即 P:projection;V:view;M:model。model矩阵对应从局部坐标系到世界坐标系的变换;view矩阵对应从世界坐标系到观察坐标系的变换;projection 矩阵对应从观察坐标系到剪裁空间的变换。 3.通过注册鼠标和键盘控制函数,使立方体可以通过设备控制。 效果 主要实现代码 main.cpp 完整的项目代码 链接:https://pan.baidu.com/s/1GH_3Yqe4FJt6ivZ1DZkhSA 提取码:u8gs 参考资料 https://www.icourse163.org/learn/HUST-1003636001?tid=1457257442#/learn/content?type=detail&id=1232561377&sm=1
效果: 摘要: 使用ssimp并创建实际的加载和转换。目标是创建另一个类来完整地表示一个模型,或者说是包含多个网格,甚至是多个物体的模型。一个包含木制阳台、塔楼、甚至游泳池的房子可能仍会被加载为一个模型。我们会使用Assimp来加载模型,并将它转换(Translate)至多个Mesh对象。 首先需要调用的函数是loadModel,它会从构造器中直接调用。在loadModel中,我们使用Assimp来加载模型至Assimp的一个叫做scene的数据结构中。一旦我们有了这个场景对象,我们就能访问到加载后的模型中所有所需的数据了。 主要代码: 参考资料: https://learnopengl-cn.github.io/03%20Model%20Loading/03%20Model/ 完整的项目代码: 链接:https://pan.baidu.com/s/1IZbmCldx_4N4bAeeWhT2dA提取码:vtbh
效果: 创建一个包含六个光源的场景。将模拟一个类似太阳的定向光(Directional Light)光源,四个分散在场景中的点光源(Point Light),以及一个手电筒(Flashlight)。 为了在场景中使用多个光源,我们希望将光照计算封装到GLSL函数中。这样做的原因是,每一种光源都需要一种不同的计算方法,而一旦我们想对多个光源进行光照计算时,代码很快就会变得非常复杂。如果我们只在main函数中进行所有的这些计算,代码很快就会变得难以理解。 GLSL中的函数和C函数很相似,它有一个函数名、一个返回值类型,如果函数不是在main函数之前声明的,我们还必须在代码文件顶部声明一个原型。我们对每个光照类型都创建一个不同的函数:定向光、点光源和聚光。 当我们在场景中使用多个光源时,我们需要有一个单独的颜色向量代表片段的输出颜色。对于每一个光源,它对片段的贡献颜色将会加到片段的输出颜色向量上。所以场景中的每个光源都会计算它们各自对片段的影响,并结合为一个最终的输出颜色。 1.主要实现代码: main.cpp #include <glad/glad.h>#include <…
一、构建GLFW 首先需要获取glfw3.lib文件,获取glfw3.lib文件有两种方法: 第一种方法:直接在官网下载 建议下载32位的。这个是Release版本,所以只能在Release下使用 第二种方法:使用CMake编译获取(建议使用此方法) (1)下载GLFW资源包 (2)下载安装CMake 为什么要用CMake? 从源代码编译库可以保证生成的库是兼容你的操作系统和 CPU 的,而预编译的二进制文件可能会出现兼容问题(甚至有时候没提供支持你系统的文件)。提供源代码所产生的一个问题在于不是每个人都用相同的 IDE 开发程序,因而提供的工程/解决方案文件可能和一些人的 IDE 不兼容。所以人们只能从.c/.cpp和.h/.hpp 文件来自己建立工程/解决方案,这是一项枯燥的工作。但因此也诞生了一个叫做 CMake 的工具。 1、官网下载:https://cmake.org/download/ 2、启动 CMake 在CMake安装目录的bin文件夹下双击cmake-gui.exe启动CMake: 源代码目录我们选择 GLFW 的源代码的根目录,然后我们在根目录下新建一个 buil…