日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[UnityShader3]光晕效果

發(fā)布時(shí)間:2024/5/14 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [UnityShader3]光晕效果 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考鏈接:

3D:

http://tieba.baidu.com/p/2454612524

http://tieba.baidu.com/p/3401476641

http://bbs.cgwell.com/thread-11215-1-1.html

2D:

http://www.cnblogs.com/xiaozefeng/p/Unity3D_Shader_Light_Sword.html


一、3D光暈

效果圖:



其實(shí)3D光暈,就是邊緣光的一個(gè)變種而已。如果你想把這個(gè)shader應(yīng)用到人物、武器模型上,需要修改一下法線擠出的值,或者干脆就不要法線擠出,直接削減模型邊緣。

Shader "Custom/Glow" {Properties{_MainTex ("Texture", 2D) = "white" {}_EdgeColor ("EdgeColor", Color) = (1, 0, 0, 1)_EdgePower ("EdgePower", Range(-2, 2)) = -2_EdgeMinStrength ("MinStrength", Range(0, 1)) = 0.5//若大于該強(qiáng)度,則發(fā)光}SubShader{Tags { "Queue" = "Transparent" }Blend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal : NORMAL;};struct v2f{ float4 vertex : SV_POSITION;float2 uv : TEXCOORD0;float3 worldNormal : TEXCOORD1;float3 worldViewDir : TEXCOORD2;};sampler2D _MainTex;float4 _MainTex_ST;fixed4 _EdgeColor;half _EdgePower;fixed _EdgeMinStrength;v2f vert (appdata v){v2f o;v.vertex.xyz += v.normal * 0.1;//如果不是幾何模型的話(如人物),最好注釋這句,否則模型會(huì)變胖變形o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.worldNormal = mul(_Object2World, v.normal);o.worldViewDir = WorldSpaceViewDir(v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{fixed4 col = tex2D(_MainTex, i.uv);float dotProduct = saturate(dot(normalize(i.worldNormal), normalize(i.worldViewDir)));float edgeStrength = 1 - dotProduct;if(edgeStrength > _EdgeMinStrength) {fixed4 finalCol = pow(dotProduct, _EdgePower) * _EdgeColor * 2;finalCol.a = pow(dotProduct, 1.5);return finalCol;} else return col;}ENDCG}} }


二、2D光暈

效果圖:


光暈效果的一個(gè)特征就是有漸變的效果,但是由于本人的P圖技術(shù)不精,搞了很久也弄不成合適的漸變圖,所以效果就比較差了。

Shader "Custom/Glow2" {Properties{_MainTex ("Texture", 2D) = "white" {}_HaloTex ("HaloTex", 2D) = "white" {}_EmissionColor ("EmissionColor", Color) = (0, 0, 1, 1)_HaloAlpha ("HaloAlpha", Range(0, 0.5)) = 0}SubShader{Tags { "Queue" = "Transparent" }Blend SrcAlpha OneMinusSrcAlphaPass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{ float4 vertex : SV_POSITION;float2 uv : TEXCOORD0;float2 haloUV : TEXCOORD1;//如果兩張圖片不對(duì)齊,需要對(duì)光暈圖進(jìn)行uv偏移};sampler2D _MainTex;float4 _MainTex_ST;sampler2D _HaloTex;float4 _HaloTex_ST;fixed4 _EmissionColor;float _HaloAlpha;v2f vert (appdata v){v2f o;o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);o.haloUV = TRANSFORM_TEX(v.uv, _HaloTex);return o;}fixed4 frag (v2f i) : SV_Target{fixed4 mainCol = tex2D(_MainTex, i.uv);fixed4 haloCol = tex2D(_HaloTex, i.haloUV);//顏色分兩部分計(jì)算//1.劍體 2.劍體周圍的光暈fixed3 finalRGB = mainCol.rgb + _EmissionColor.rgb //1 + haloCol.a * _EmissionColor.rgb; //2fixed finalA = max(mainCol.a, haloCol.a * _HaloAlpha * abs(sin(_Time.y * 2)));return fixed4(finalRGB, finalA);}ENDCG}} }

這是unitypackage:

http://pan.baidu.com/s/1dFFhPxn


總結(jié)

以上是生活随笔為你收集整理的[UnityShader3]光晕效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。