Unity Shader
文章平均质量分 88
爱上对方zzq
这个作者很懒,什么都没留下…
展开
-
UnityShader 全屏界面变灰
之前的面试的时候有被问到,像4月4号清明节的时候,很多软件的界面都变成灰色,想要实现这个有什么思路,当时由于紧张,没有什么思路,后面想想,用屏幕后处理是可以实现的,像很多游戏,主角死亡后,游戏画面变灰,会不会也是这么实现的呢?话不多说,直接上代码:CS代码:首先我要准备渲染RenderTexture的材质,这里我们使用一个可以在屏幕后处理中使用的通用基类。using UnityEngine;...原创 2020-04-19 22:31:46 · 2587 阅读 · 0 评论 -
unity shader 变种(多重编译 multi_compile)
一、定义在unity中我们可以通过使用#pragma multi_compile或#pragma shader_feature指令来为shader创建多个稍微有点区别的shader变体。这个Shader被称为宏着色器(mega shader)或者超着色器(uber shader)。实现原理:根据不同的情况,使用不同的预处理器指令,来多次编译Shader代码。在运行时,Unity从Materia...原创 2019-09-26 21:13:18 · 267 阅读 · 0 评论 -
UnityShader-屏幕后处理之边缘检测
一、屏幕后处理原理我的另外一篇文章有详细的介绍:UnityShader-屏幕后处理(调节亮度,饱和度,对比度)二、卷积与卷积核卷积核通常是一个四方形网格结构(例如2x2,3x3的方形区域),该方形区域每个方格都有一个权重值。当对图像中的某个像素进行卷积时,我们会把卷积核的中心位置放在该像素上,翻转核之后再依次计算核中每个元素和其覆盖的图形像素值的乘积并求和,得到的结果就是该位置的像素值。...原创 2018-10-25 17:06:40 · 184 阅读 · 0 评论 -
Unity透明效果原理与实现
一、前提知识(1)深度缓存它的基本思想是:根据深度缓存中的值来判断该片元距离摄像机的距离,当渲染一个片元时,需要把它的深度值和已经存在于深度缓冲中的值进行比较(如果开启了深度测试),如果它的值距离摄像机更远,那么说明这个片元不应该被渲染到屏幕上(有物体挡住了它);否则,这个片元应该覆盖掉此时颜色缓冲中的像素值,并把它的深度值更新到深度缓冲中(如果开启了深度写入)。(2)颜色缓存需要渲染的场...原创 2018-10-16 12:09:52 · 795 阅读 · 0 评论 -
UnityShader-屏幕后处理(调节亮度,饱和度,对比度)
一、什么是屏幕后处理在渲染完整个场景得到屏幕图像后,再对这个图像进行一系列的操作,实现各种屏幕特效。常用于处理景深、描边,图像模糊等特效。二、实现原理想要实现屏幕后处理的基础在于得到渲染后的整个屏幕的图像,即抓取屏幕,在Unity中为我们提供了一个方便的接口——OnRenderImage函数:MonoBehaviour.OnRenderImage(RenderTexture src, Re...原创 2018-08-29 18:00:24 · 545 阅读 · 0 评论 -
UnityShader入门精要-凹凸映射
一、什么是凹凸映射当我们要表现一个模型凹凸有致的时候,我们往往需要给这个模型添加许许多多的面来表现它的凹凸感,但是当我们的模型的面数越多的时候对于渲染时的性能开销也就也大,所以这往往也是不太可取的。这是就提出了凹凸映射这种解决方法。凹凸映射的目的就是使用一张纹理来修改模型表面的法线,以便为模型提供更多的细节。PS:这种方法不会真的改变模型的顶点位置,只是然那个模型看起来好像凹凸不平。上面...原创 2018-07-22 18:12:10 · 207 阅读 · 0 评论