Unity Shader 您所在的位置:网站首页 丁达尔光什么意思 Unity Shader

Unity Shader

2024-07-12 10:44| 来源: 网络整理| 查看: 265

前言

好久没有更新博客了,经历了不少事情,好在最近回归了一点正轨,决定继续Unity Shader的学习之路。作为回归的第一篇,来玩一个比较酷炫的效果(当然废话也比较多),一般称之为GodRay(圣光),也有人叫它云隙光,还有人叫它体积光(探照灯)。这几个名字对应几种类似的效果,但是实现方式相差甚远。先来几张照片以及其他游戏的截图看一下:

ps:这张图片是一张照片哈,是本屌丝看别人的云南游记发现的,哎呀,看着好美好想去>_

径向模糊=>增大模糊半径再次径向模糊=>与原图叠加的效果分别如下图:

下面附上shader代码:

//puppet_master //2018.4.20 //后处理方式实现GodRay Shader "GodRay/PostEffect" { Properties{ _MainTex("Base (RGB)", 2D) = "white" {} _BlurTex("Blur", 2D) = "white"{} } CGINCLUDE #define RADIAL_SAMPLE_COUNT 6 #include "UnityCG.cginc" //用于阈值提取高亮部分 struct v2f_threshold { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; }; //用于blur struct v2f_blur { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float2 blurOffset : TEXCOORD1; }; //用于最终融合 struct v2f_merge { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; float2 uv1 : TEXCOORD1; }; sampler2D _MainTex; float4 _MainTex_TexelSize; sampler2D _BlurTex; float4 _BlurTex_TexelSize; float4 _ViewPortLightPos; float4 _offsets; float4 _ColorThreshold; float4 _LightColor; float _LightFactor; float _PowFactor; float _LightRadius; //高亮部分提取shader v2f_threshold vert_threshold(appdata_img v) { v2f_threshold o; o.pos = UnityObjectToClipPos(v.vertex); o.uv = v.texcoord.xy; //dx中纹理从左上角为初始坐标,需要反向 #if UNITY_UV_STARTS_AT_TOP if (_MainTex_TexelSize.y < 0) o.uv.y = 1 - o.uv.y; #endif return o; } fixed4 frag_threshold(v2f_threshold i) : SV_Target { fixed4 color = tex2D(_MainTex, i.uv); float distFromLight = length(_ViewPortLightPos.xy - i.uv); float dist


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有