草庐IT

Unity中Shader雾效的实现方法一

文章目录前言一、在片元着色器中使用如下公式计算`最终的颜色=lerp(雾效颜色,物体颜色,雾效混合因子)`1、获取雾效颜色2、物体的颜色一般通过纹理采样得到,此处用1代替测试3、获取雾效混合因子(由雾的距离和雾的浓度决定)二、在顶点着色器中,计算不同类型的雾效混合因子(在顶点着色器计算节省性能)Unity预定义好方便我们计算的四维变量unity_FogParams1、计算线性雾的雾效混合因子2、计算指数雾1的雾效混合因子3、计算指数雾2的雾效混合因子三、最终测试代码前言Unity中Shader雾效的实现方法一,按照之前的公式,我们自己来实现一下Unity中Shader雾效的原理基于上一篇文章继

Unity 2D外描边Shader

Unity2D外描边一、前言二、Shader内容2.1初版shader2.2效果2.3分析2.4优化2.4.1优化边缘接近透明的像素2.4.2优化掉if2.4.3增加亮度三、完整代码一、前言今天,我们来实现一个2D外描边的效果。外描边:即在边缘透明像素周围加上一层描边,不占用原来的像素。思路:我们可以在片元着色器实现此效果,当一个像素本身不是透明的(alpha>0),那么让它返回自身的颜色;当一个像素本身是透明的,并且它上下左右4个像素的alpha值总和不等于0,那么我们可以判定该像素处于边缘,让它变成描边颜色就可以。二、Shader内容2.1初版shader好,我们根据思路来写代码Shade

Shader Graph10-Min, Max, Clamp, Saturate节点

打开UE,新建Material叫做DemoMinMaxClamp,双击打开一、Minimum节点,两个值比较取较小的。Min的含义是,红框的0.5为参数B的值,1.0为白色圆形的值,下面的0.5为背景颜色值。图片中每个像素值与0.5进行比较,选择较小的值。如果A的值1,那么结果就是0.5。如果A的值0.4,那么结果是0.4。所以结果就是全是灰色的背景色。 当把B的值改为0.6的时候,就是下面的结果 二、Max节点,两个值比较取较大的值B的值为1时,结果是下面的样子。B的值为0.8时,结果是下面的样子。当参数值为0.8时,0.8与1.0比较结果为1.0,0.8与0.5比较结果为0.8,所以背景会

Shader的组成部分Fallback

文档Fallback作用SubShader都不起作用的时候,使用Fallback确保有备有的shader起作用语法Fallback"Shader名字”不使用备用shaderFabllbackOff

Unity Shader:tex2D函数详解

tex2D函数作用:CG程序中用来在一张贴图中对一个点进行采样的方法,返回一个float4,通过一个二维uv坐标在纹理上,获取该处值。 float4Tex2D(sampler2Dtex,float2s):s-需进行查找的纹理坐标(uv)其中根据纹理的类型不同,获取的值的含义也不一样,普通纹理一般代表的是该点的颜色值//该像素的真实颜色值half4c=tex2D(_MainTex,IN.uv_MainTex);bump类型纹理上存储的值代表的含义是该点的法向量//从_Bump纹理中提取法向信息tex2D(_Bump,IN.uv_Bump) tex2D数值精度问题:有时候数据被适应到0.f~1.f

Unity Shader:闪烁

还是一样的分为UI闪烁和物体闪烁,其中具体可分为:UI闪烁、物体闪烁与半透明闪烁1,UI闪烁对于UI还是一样的,改写UI本身的shader:Shader"UI/YydUIShanShder"{ Properties { [PerRendererData]_MainTex("SpriteTexture",2D)="white"{} _Color("Tint",Color)=(1,1,1,1) _StencilComp("StencilComparison",Float)=8 _Stencil("StencilID",Float)=0 _StencilOp("StencilOperatio

Unity用Shader实现边缘光效果

《自学记录》1、先创建一个Cube,再创建两个材质球Cube、Unilt2、再创建一个shader代码UniltShader【Project右键Create->Shader->NewSurfaceShader】把里面原来的代码删除,写入下面的代码Shader"Custom/highlight"{//属性Properties{_Diffuse("Diffuse",Color)=(1,1,1,1)_OutlineCol("OutlineCol",Color)=(1,0,0,1)_OutlineFactor("OutlineFactor",Range(0,1))=0.1_MainTex("Base2

Unity中Shader 纹理属性 Tilling(缩放度) 和 Offset(偏移度)

文章目录前言一、Tilling(缩放度),个人理解有点像减小周期函数的周期的效果(在单位空间内,容得下重复的函数图像的多少)二、Offset(偏移度),个人理解是函数的平移三、在Shader中使用Tilling和Offset时,需要在纹理后申明一个四维向量(因为是纹理,需要精确一点,一般使用float4这个四维向量,且名字在贴图名后加_ST即可)1、然后这里用消融效果的噪波贴图做例子,就是在片元着色器中,对噪波贴图进行采样时,使用噪波贴图的二维向量uv*XX_ST.xy+XX_ST.zw(这里的xy代表Tilling的xy,zw代表Offset的xy)2、优化代码在片元着色器取样时,对每一个取

Unity-Shader-高亮Highlight

常用Shader-高亮,可动态调整高亮颜色、高亮强度范围/等级、高亮闪烁速度、高亮状态Shader"CustomShader/Highlight"{ Properties { _Color("Color",Color)=(0.9044118,0.6640914,0.03325041,0) _Albedo("Albedo",2D)="white"{} _Normal("Normal",2D)="bump"{} _Emission("Emission",2D)="black"{} _Oclussion("Oclussion",2D)="white"{} _HighlightColor(

Shader学习笔记:BRDF简单概述

这篇文章写于一年多以前的一次课程作业,这次作为一个“存货”给放出来,仅仅只是针对代码和一些要点进行简单叙述,如果想听完整的版本,请搜索毛星云大神的博客或者书籍。关于基本的物理渲染公式,网络上的博客和典籍已经多如牛毛了,这里只是自己在之前整理的结果上传。 引言如何对使用计算机图形基础构建出的面进行着色是计算机图形学的基本课题之一,为此,裴祥风提出了Phong氏光照模型,即对于一个表面,其漫反射光照值等于被照射平面的法线和光线组成的夹角的余弦,其高光反射值等于被照射平面的法线和光线入射与视角出射的组成半向量的余弦的幂函数。这个模型可以很好的描述非金属绝缘体的着色效果,但是对于具有金属性的导体则不能