首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

29.opengl高级光照-视差贴图

为什么要使用视差贴图? 上一篇法线贴图使用了法线纹理,通过法线的变化来控制漫反射和镜面反射的强度,加强了纹理渲染的层次感,明暗渐变更符合实际情况。视差贴图在法线贴图之上,增加物体表面的凹凸感。...法线贴图 法线贴图+视差贴图 可以明显看到,视差贴图在每一块的边缘部分立体感更强了,凹凸有致啊。 2. 视差贴图的实现原理 ?...视差贴图算法的核心就是设计一个算法,把2维的纹理映射成一个三维的采样。 砖的表面是毛糙不平的,整个深度贴图是这样的: ?...片段着色器 parallax_mapping.vs,有些变化,增加了深度贴图,计算坐标视差 取出纹理后,增加视差偏移,视差偏移的算法如下,其他的逻辑和上一篇法线贴图的fs没有区别。..., GLFW_OPENGL_CORE_PROFILE); #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE

83520
您找到你想要的搜索结果了吗?
是的
没有找到

28.opengl高级光照-法线贴图

最近家庭添了新成员,在家休陪产假,一边照顾家属,一边继续opengl的学习,精神很难集中,只有等晚上家人都睡着了,才能静下心来揣摩知识点,加油吧,opengl系列快结束了。...使用法线贴图 很明显,左边的图片就是硬邦邦的渲染上去,右边的图片增加了法线贴图,效果更好。很好理解,至少砖的缝隙中法线不是垂直墙面的,还有每一块砖的面并不是平的。 ?...法线贴图 得到法线后,计算光照夹角和普通的光照没有分别,还是分别计算环境光、漫反射、镜面反射等。 1.3 问题来了 ?...TBN矩阵向量 TBN矩阵, T 和 B分别与法线纹理贴图的x y 轴对齐(理论上其他的也可以,默认选择x y 轴对齐),N即法线纹理贴图的向上垂直向量。..., GLFW_OPENGL_CORE_PROFILE); #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE

1K10

OpenGL 实现视差贴图与 UE 中的凹凸贴图偏移(Bump Offset)

UE 中提供了 凹凸贴图偏移 的贴图来实现修改 UV 坐标达到提升表面细节,使材质产生深度错觉。凹凸贴图偏移是 UE4 中的术语,其实就对应于 LearnOpenGL 网站上的 视差贴图。...视差贴图原理 理解了视差贴图的含义就很容易明白凹凸贴图偏移的作用了,它的原理如下图所示: 首先需要提供一张代表高度图的纹理,这样每个像素点都对应一个高度值,上图中的红线可以理解成高度值分布,点 A...视差贴图存在一定的局限性,主要在于点 B 和向量 P 之间有时候变化很块导致预测误差较大,所以才有了后面的陡峭视差映射和视差遮蔽映射,在 UE 中也提供了视差遮蔽映射的计算,不过本篇先使用简单的视差映射...理解了视差映射的基础概念后,就很容易明白 UE 中凹凸贴图偏移的对外参数含义了。...视差遮蔽映射会比简单的视差贴图实现更好的效果,但是性能上也会损耗多一些,不过它在移动端上是没有效果的。

1K20

18.opengl高级-立方体贴图

一、原理 立方体贴图在《视觉计算基础》一书中,第14章的环境贴图中有讲到,常见的环境贴图有立方体环境贴图和球体环境贴图,根据实际场景来区分使用,比如你想创建一个四四方方的房间环境,就用立方体贴图。...立方体贴图在游戏中很常见,用于创建一个封闭的逼真的游戏场景 ? 立方体环境贴图取纹理像素 二、实现效果 游戏【上古卷轴3】天空盒 ?...创建立方体贴图 立方体贴图和其他纹理一样,区别是需要绑定到GL_TETURE_CUBE_MAP unsigned int textureID; glGenTextures(1, &textureID);...glBindTexture(GL_TEXTURE_CUBE_MAP, textureID); 立方体贴图包含6个纹理,所以需要调用glTexImage2D函数生成6个采样器,opengl专门设计了立方体贴图的六个面..., GLFW_OPENGL_CORE_PROFILE); #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE

96630

OpenGL进行立方体表面纹理贴图

一、目的 掌握OpenGL中纹理对象的创建、绑定与使用方法。...glutInitWindowSize(600, 600); //显示框的大小 glutInitWindowPosition(100, 100); //确定显示框左上角的位置 glutCreateWindow("OpenGL...纹理贴图"); init(); //初始化资源,这里一定要在创建窗口以后,不然会无效。...四、注意 1.贴图文件大小必须为:宽、高都必须为2的整数次幂,格式必须为BMP。 2.贴图需要放在相应文件夹下,在编译器中直接运行此程序可能会看不到贴图效果。 ? 点开箭头所指的文件夹 ?...纹理贴图是一个很有趣的实验,它就像一层嫁衣,为你所创建的目标对象披上一件外衣,让别人看着赏心悦目,当然我目前所学的只是对规则物体进行纹理贴图,以后还会遇到不规则的物体等。

2.1K40

OpenTK 入门系列

1 从0开始,设置一个可用的 OpenGL 窗口。 ? 2 进行最简单的贴图 ? 3 在OpenGl中简单旋转一个物体 ? 4 在 OpenGL 窗口中同时分别旋转两个不同的物体 ?...5 在 OpenGL 窗口中使用倒影 ? 6 在 OpenGL 窗口中使用倒影反射 ? 7 使用 OpenGL 光照效果 ? 8 在 OpenGL 窗口中进行简单的碰撞检测 ?...9 使用 OpenGL 进行简单的地形渲染 ? 10 使用 OpenGL 创建球体,并进行贴图 ? 11 创建一个简单的粒子系统 ?...下载以上例子的源代码, 至于OpenTK的源代码就自己下载吧, 这里不提供了, 如果你的机子不是太旧的话, 应该都可以运行的, 我用的机器较旧, ATI Radeon 9500的显卡, 支持 OpenGL...2.0 , 这些粒子都可以运行, 如果你的机子的显卡比这个还旧的话, 可能会无法运行。

1.9K21

灰度图,法线贴图,置换贴图和位移贴图

Normal Map只是一种目前很流行的凹凸贴图技术,而这里将会介绍一些目前游戏和在XBOX360和PlayStation3这种新世代主机上将会运用的凹凸贴图技术。...这种贴图是一种灰度图,用表面上灰度的变化来描述目标表面的凹凸,因此这种贴图是黑白的,如果节省空间的画,甚至可以把贴图的Alpha通道征用来用作Bump。...值得注意的是,这种贴图表面上存储的东西是高度域--即每个点和原始表面的高度差,记住,每个点的颜色不是色彩,是高度,一个数值!因此,对这个贴图做任何的操作都会影响到这个物体3D的外观质感。...这是其他任何凹凸贴图方式所不能比拟的!...ReliefMapping 和 ParallaxOcclusionMapping 和 ConeMapping 浮雕纹理贴图和视差阻塞贴图和圆锥跟踪贴图 三种利用切空间光线追踪先进算法的技术,三种方法分别是光线跟踪

1.7K20

法线贴图

image.png 可行的方法就是将这个平面用一个贴图覆盖,用贴图的纹理实现一定的凹凸效果。但是这种方法实现的效果并不是很好,因为如果视角一变化,看起来就会像一张简单的画有图案的平面了。...后来,聪明的游戏开发者想出了一种方法,就是在贴图过程中对贴图进行一定的处理,从而保证了在视角变换以后仍然保证有较为明显的凹凸效果,也就是法线贴图。...image.png 准确的说,法线贴图是Bump Mapping(凹凸贴图)的其中一种。第一个Bump Mapping由Blinn在1978年提出,目的是以低代价给予计算机几何体以更丰富的表面信息。...研究人员对法线贴图进一步改进,出现了Parallax Mapping(视差贴图), Relief Mapping等技术,实现了更逼真的效果。 人之所以能够对景物看出立体感的主要原因是因为人有两只眼睛。...一条法线是一个三维向量,一个三维向量由x, y, z等3个分量组成,在法线贴图中,把(x, y, z)当作RGB3个颜色的值存储。 录这些法线的载体就被我们称为法线贴图。 image.png

1.6K10

OpenGL入门

实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。...在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。...这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug,这也是为什么总是建议你偶尔更新一下显卡驱动 可以将显卡驱动比喻是显卡的操作系统,是显卡的灵魂 为什么要用...正是由于它们具有并行执行的特性,当今大多数显卡都有成千上万的小处理核心,它们在GPU上为每一个(渲染管线)阶段运行各自的小程序,从而在图形渲染管线中快速处理你的数据。...这需要使用到一些数学知识,这里可以参考OpenGL官网译文 其他3D术语: 2D+透视 = 3D 纹理贴图:将纹理图片附着到你绘图的图像上 混合:颜色混合效果 渲染:表示计算机从模型创建最终图像的过程

2.3K40

OpenGL入门

实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。...在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。...这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug,这也是为什么总是建议你偶尔更新一下显卡驱动 可以将显卡驱动比喻是显卡的操作系统,是显卡的灵魂 image.png...正是由于它们具有并行执行的特性,当今大多数显卡都有成千上万的小处理核心,它们在GPU上为每一个(渲染管线)阶段运行各自的小程序,从而在图形渲染管线中快速处理你的数据。...这需要使用到一些数学知识,这里可以参考OpenGL官网译文 其他3D术语: 2D+透视 = 3D 纹理贴图:将纹理图片附着到你绘图的图像上 混合:颜色混合效果 渲染:表示计算机从模型创建最终图像的过程

1.8K40
领券