##13.1原理: 深度纹理,存储的不是颜色值,而是一个高精度的深度值[0,1] - 归一化的设备坐标(Normalized Device Coordinates,NDC) 精度(24or16位) 1)使用延迟渲染时,G-buffer中直接可得。2)否则通过单独的pass,unity使用Shader ...
分类:
其他好文 时间:
2020-08-18 14:01:47
阅读次数:
67
Unity内置的雾效需要在每个shader中分别编写,造成了极大的不便。这里利用屏幕后处理产生可单独控制且自由度更高的雾效。 屏幕后雾效的本质在于,根据深度纹理重构每个像素在世界空间中的位置,利用得到的坐标计算出一个雾效系数,最终利用雾效系数与雾的颜色相乘并与原始颜色进行插值运算得出最终效果。 fl ...
分类:
编程语言 时间:
2019-07-24 13:25:01
阅读次数:
511
PSSM(Parallel Split Shadow Map)平行分割阴影图,是一种根据距离远近采用多个深度纹理渲染阴影的方法 适合用于室外大场景中的平行光比如太阳形成的阴影 本系列需要读者了解基本的深度阴影渲染方面的知识 1 视锥划分 如下图,以采用三个划分为例: 这里将视锥体平行划分为3个区域, ...
分类:
其他好文 时间:
2016-09-18 23:37:07
阅读次数:
187
目的:
物体投影在另一个物体身上,而另一个物体可能是平的,但大多数都是不平的多边形物体,这里考虑的是后者,这样可以适用于大多数场合的投影。
预览效果:
原理:
这里使用的是shadow mapping方式,其原理如下:
1、将场景的深度值预先渲染到 以光源位置为原点、光线发射方向为观察方向的投影坐标系中,形成深度纹理。
2、再次渲...
分类:
移动开发 时间:
2016-04-29 15:53:11
阅读次数:
253
视差贴图(Parallax Mapping)
视差贴图目前已经被广泛运用了,只需要增加一种模型表面的深度纹理信息之后,就能近似的模拟模型的凹凸,在不需要灯光,不需要环境反射的情况下,可以比较真实的模拟真实世界.
原理:
根据用户的观察角度来将纹理坐标偏移,就是把模型表面较高的位置来遮挡位置较低的位置.当用户观察角度改变的时候,让一些像素的纹理坐标偏移来遮挡一些像素,从而使观察者感觉到凹凸...
分类:
移动开发 时间:
2016-04-22 20:27:11
阅读次数:
358
目录[-]光源视角新型的纹理深度纹理的大小首先绘制阴影然后是光照投影阴影贴图阴影比较之前我们介绍过简单的把物体压平到投影平面来制造阴影。但这种阴影方式有其局限性(如投影平面须是平面)。在OpenGL1.4引入了一种新的方法阴影贴图来产生阴影。阴影贴图背后的原理是简单的。我们先把光源的位置当作照相机的...
分类:
其他好文 时间:
2015-12-02 18:04:55
阅读次数:
205
一.shadow2DProjEXT函数需要传入一张深度纹理和一个点的坐标(4维)
1.这里首先注意的是这张纹理必须使用采样器类型为sampler2DShadow才可以,直接使用sampler2D是不行的,会出错。
2.深度纹理必须设置正确的格式GL_DEPTH_COMPONENT,另外要指定相应的比较函数,可以通过glTexParameteri来设置GL_TEXTURE_COMPARE_FUN...
分类:
移动开发 时间:
2015-06-19 16:50:51
阅读次数:
353
前段时间一直在弄一个室内场景,首先完成了render,效果还可以。然后给其加上shadow,使其更逼真。这里主要记录下在做的过程中遇到的问题。
1.是在导入场景的时候,由于场景比较大(200M)左右,所以在ios上加载这么大的场景会频繁的memorywarning,然后就会被系统kill掉。这个问题的解决方法是通过改变数据类型来达到压缩的目的。顶点的坐标double是没法改变的,如果改变会...
分类:
移动开发 时间:
2015-05-18 23:04:21
阅读次数:
156
ssao,
基本思路是先得到深度纹理,以及法线纹理.
然后画一个覆盖全屏的四边形
不一定真画,只要保证四边形的四个点映射到屏幕的四个角即可,
所以甚至可以不必传入顶点的坐标数据,根据顶点索引值(dx可以得到,opengl考虑顶点属性)
映射到屏幕的四个角
在四边形片元(dx对应叫像素)着色器中,查对应的深度纹理,以及法线纹理normal.
可以根据深度值还原出...
分类:
其他好文 时间:
2015-05-08 00:07:25
阅读次数:
224
这里不介绍算法原理,只说说在实现过程中遇到的问题,以及背后的原因。开发环境:opengl 2.0 glsl 1.0。 第一个问题:产生深度纹理。 在opengl中每一次离屏渲染需要向opengl提供一个renderframe,一个renderframe包含一个texture和一个render...
分类:
其他好文 时间:
2015-02-01 10:44:55
阅读次数:
447