UnityShader 效果积累

理论部分

Unityshader 颜色相加和颜色相乘

--颜色的RGB值都是[0,1]的,颜色的相乘,必然会使颜色值减小,物体更暗,颜色相加则会使物体更亮;

--计算光照反射时,经过物体材质的反射,光的颜色必然是经过削弱的,所以计算光照反射时一般是颜色相乘

--计算贴图采样和环境光颜色时,也是用了颜色相乘,计算两个颜色值混合时,一般是相乘,在现实生活中,把不同颜色的颜料混合在一起时,颜色最终会变为黑色,这说明他们的颜色值越来越小

--计算不同类型的光照叠加时,一般使用颜色相加

Step函数, Lerp函数,SmoothStep函数,Clamp函数

Val=Step(a,b)

If(a<=b){

Val=1;

}else{

Val=0;

}



Lerp(a,b,w)

{

Return a+(b-a)*w

}



Clamp(x,min,max){

If(xmax){

Return max;

}

Return x;

}



SmoothStep(min,max,x){

X=calmp((x-min)/(max-min)),0.0,1.0);

Return x*x*(3-2*x);

}

if else 和 阶梯函数step

--由于GPU程序是并行计算,if语句和Switch语句条件分支会执行2个分支,如果有些像素采取一个分支,有些像素不采用另一个分支,则所有片段都会执行2个分支,但只是在每个片段应该采取的分支上写入寄存器,对于追去高并行的GPU,分支是必须要同步的,那么慢的case就会造成短板效应; 另外,if等流程控制语句对GPU来讲有较高的指令开销;

边缘光效果

实现原理: 菲涅尔效果叠加到自发光

UnityShader 效果积累_第1张图片

 UnityShader 效果积累_第2张图片

积雪效果

现实表现:

落雪掉落在物体表面上, 落雪的方向一般是垂直向下, 物体的表面如果和落雪方向接近垂直则更加容易落雪, 也就是说落雪方向和表面的法线的夹角越小越容易落雪;

落雪的数学判断:

value = dot(落雪方向,顶点法线)=cos(夹角) , 夹角越小,value约趋近于1 

使用value和传入的SnowDepth比较,返回0或者1,表示 这个顶点是否落雪

UnityShader 效果积累_第3张图片

UnityShader 效果积累_第4张图片

表面水纹叠加

实现原理:使用Time节点修改TilingAndOffset的UV偏移,叠加水纹理和漫反射纹理

UnityShader 效果积累_第5张图片

UnityShader 效果积累_第6张图片

颜色渐变

实现原理:使用模型定点的Y分量对渐变色进行Lerp

UnityShader 效果积累_第7张图片

UnityShader 效果积累_第8张图片

裁剪效果

UnityShader 效果积累_第9张图片

UnityShader 效果积累_第10张图片

使用渐变纹理进行卡通渲染

实现原理:使用兰伯特光照采样渐变纹理, 混合满反色纹理和渐变纹理,最后叠加自发光

UnityShader 效果积累_第11张图片

 UnityShader 效果积累_第12张图片

溶解效果

UnityShader 效果积累_第13张图片

UnityShader 效果积累_第14张图片

其他效果

UnityShader 效果积累_第15张图片

 UnityShader 效果积累_第16张图片

--------------------------------------

UnityShader 效果积累_第17张图片

UnityShader 效果积累_第18张图片

--------------------Fade

UnityShader 效果积累_第19张图片

UnityShader 效果积累_第20张图片

你可能感兴趣的:(UnityShader笔记,UnityShader笔记,落雪效果,边缘光效果,水纹效果,渐变色效果)