shader 边缘泛光2
来源:互联网 发布:战舰世界岛风f3数据 编辑:程序博客网 时间:2024/04/27 06:19
pass1:
v.vertex.xyz += v.normal * _Outer;边缘沿着法向量延伸
Pass{blend SrcAlpha OneMinusSrcAlphazwrite offCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float _Scale;float _Outer;struct v2f{float4 pos:POSITION;float3 normal:TEXCOORD0;float4 vertex:TEXCOORD1;};v2f vert (appdata_base v){v.vertex.xyz += v.normal * _Outer;v2f o;o.pos = mul(UNITY_MATRIX_MVP,v.vertex);o.normal = v.normal;o.vertex = v.vertex;return o;}fixed4 frag (v2f IN) : COLOR{//float3 N = mul(float4(IN.normal,0),_World2Object).xyz;float3 N = normalize(mul(IN.normal,(float3x3)_World2Object));float3 V = normalize(WorldSpaceViewDir(IN.vertex));float bright = saturate(dot(N,V));fixed4 col = fixed4(1,1,1,1);col.a *= pow(bright,_Scale);return col;}ENDCG}
得到:
添加内部纯白
pass2
Pass{zwrite offCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float _Scale;float _Outer;struct v2f{float4 pos:POSITION;};v2f vert (appdata_base v){v2f o;o.pos = mul(UNITY_MATRIX_MVP,v.vertex);return o;}fixed4 frag (v2f IN) : COLOR{return fixed4(1,1,1,1);}ENDCG}
加上
//上面的颜色减掉现在的颜色
blendop Sub
blend one SrcColor
得到 pass2
//内部的纯白Pass{//上面的颜色减掉现在的颜色blendop Subblend one SrcColorzwrite offCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float _Scale;float _Outer;struct v2f{float4 pos:POSITION;};v2f vert (appdata_base v){v2f o;o.pos = mul(UNITY_MATRIX_MVP,v.vertex);return o;}fixed4 frag (v2f IN) : COLOR{return fixed4(1,1,1,1);}ENDCG}
加上pass3:
Pass{blend SrcAlpha OneMinusSrcAlphazwrite offCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float _Scale;struct v2f{float4 pos:POSITION;float3 normal:TEXCOORD0;float4 vertex:TEXCOORD1;};v2f vert (appdata_base v){v2f o;o.pos = mul(UNITY_MATRIX_MVP,v.vertex);o.normal = v.normal;o.vertex = v.vertex;return o;}fixed4 frag (v2f IN) : COLOR{//float3 N = mul(float4(IN.normal,0),_World2Object).xyz;float3 N = normalize(mul(IN.normal,(float3x3)_World2Object));float3 V = normalize(WorldSpaceViewDir(IN.vertex));float bright = 1- saturate(dot(N,V));return fixed4(1,1,1,1)*pow(bright,_Scale);}ENDCG}
0 0
- shader 边缘泛光2
- shader 边缘泛光
- Unity3D Shader(11)——fragment shader(边缘泛光)
- [Shader 着色器]边缘高光
- Unity Shader Example 21 (Highlighting 边缘光)
- Unity Shader-边缘光(RimLight)效果
- Unity Shader-边缘光(RimLight)效果
- Unity Shader 表面着色器边缘光(Rim Lighting)一
- Unity Shader 表面着色器边缘光(Rim Lighting)二
- 【shader】边缘自定角度高光,描边,闪烁
- 中间透明边缘泛光
- Shader学习历程(三)——shaderlab中边缘光的不同实现
- 【Unity Shader实战】利用凹凸纹理和边缘光模拟全息投影的效果
- 边缘光 rim
- 边缘高光实现
- 顶点高光.Shader
- 片段高光.Shader
- shader内置光
- cve-2012-1876漏洞分析
- GTK+-3.0编程 (五) GtkBuilder用于快速创建界面,它读取一个xml文件
- java反射增加装饰模式的普适性
- ATPG中对fault的分类
- HDU 1717
- shader 边缘泛光2
- swift地图定位(十八)发送网络请求给苹果服务器获取导航路线并解析和绘制到MKMapView
- javascript中的scrollTop的用法
- 汇编"Hello Assemble"
- MFC 多线程—— CMutex类使用
- Html5系列(一)初识Html5
- C#中this的使用
- 【Hacker Rank】02.Reading Raw Input
- 1508-张晨曦总结《2016年-11月-15日》【连续25天总结】