国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)

這篇具有很好參考價值的文章主要介紹了【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、前言

嗨,大家好,我是新發(fā)。
以前我寫文章都是很長很長,接下來我會嘗試用新的方式來寫博客,盡量簡短,以實(shí)用為主。同時也是作為自己零碎的一些記錄,方便查閱。

本文我要說的是在Unity中通過UI全屏圖來模糊場景畫面的效果。

二、效果演示

這是沒用模糊效果的樣子:
【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)
這是用了模糊效果的樣子:
【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)

三、具體操作

Canvas下創(chuàng)建一張Image作為全屏純色圖,
【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)如下
【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)
創(chuàng)建一個材質(zhì)球重命名為Blur,使用的shader代碼如下:

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Unlit/UI_BGBlur"
{
	Properties
	{
		_Size("Size", float) = 1
		_Color("Color", Color) = (1,1,1,1)
	}
	SubShader
	{
		Tags { "RenderType" = "Opaque" }
		LOD 100

		GrabPass {Tags{"LightMode" = "Always"}}

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#include "UnityCG.cginc"

			struct appdata
			{
				float4 vertex : POSITION;
				float2 uv : TEXCOORD0;
			};

			struct v2f
			{
				float4 uvgrab : TEXCOORD0;
				float4 vertex : SV_POSITION;
			};

			sampler2D _GrabTexture;
			float4 _GrabTexture_TexelSize;
			float _Size;
			half4 _Color;

			v2f vert(appdata_base v) {
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				#if UNITY_UV_STARTS_AT_TOP
				float scale = -1.0;
				#else
				float scale = 1.0;
				#endif
				o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
				o.uvgrab.zw = o.vertex.zw;
				return o;
			}

			fixed4 frag(v2f i) : SV_Target
			{
				// sample the texture
				// half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab));
				// return col;

				half4 sum = half4(0,0,0,0);

				#define GRABPIXEL(weight,kernelx) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x + _GrabTexture_TexelSize.x * kernelx*_Size, i.uvgrab.y, i.uvgrab.z, i.uvgrab.w))) * weight

				sum += GRABPIXEL(0.05, -4.0);
				sum += GRABPIXEL(0.09, -3.0);
				sum += GRABPIXEL(0.12, -2.0);
				sum += GRABPIXEL(0.15, -1.0);
				sum += GRABPIXEL(0.18, 0.0);
				sum += GRABPIXEL(0.15, +1.0);
				sum += GRABPIXEL(0.12, +2.0);
				sum += GRABPIXEL(0.09, +3.0);
				sum += GRABPIXEL(0.05, +4.0);
				sum *= _Color;
				return sum;
			}
			ENDCG
		}

		GrabPass{ Tags{ "LightMode" = "Always" } }

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#include "UnityCG.cginc"

			struct appdata
			{
				float4 vertex : POSITION;
				float2 uv : TEXCOORD0;
			};

			struct v2f
			{
				float4 uvgrab : TEXCOORD0;
				float4 vertex : SV_POSITION;
			};

			sampler2D _GrabTexture;
			float4 _GrabTexture_TexelSize;
			float _Size;
			half4 _Color;
			
			v2f vert(appdata_base v) {
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				#if UNITY_UV_STARTS_AT_TOP
				float scale = -1.0;
				#else
				float scale = 1.0;
				#endif
				o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
				o.uvgrab.zw = o.vertex.zw;
				return o;
			}

			fixed4 frag(v2f i) : SV_Target
			{
				// sample the texture
				// half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab));
				// return col;

				half4 sum = half4(0,0,0,0);

				#define GRABPIXEL(weight,kernely) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x, i.uvgrab.y + _GrabTexture_TexelSize.y * kernely*_Size, i.uvgrab.z, i.uvgrab.w))) * weight

				sum += GRABPIXEL(0.05, -4.0);
				sum += GRABPIXEL(0.09, -3.0);
				sum += GRABPIXEL(0.12, -2.0);
				sum += GRABPIXEL(0.15, -1.0);
				sum += GRABPIXEL(0.18, 0.0);
				sum += GRABPIXEL(0.15, +1.0);
				sum += GRABPIXEL(0.12, +2.0);
				sum += GRABPIXEL(0.09, +3.0);
				sum += GRABPIXEL(0.05, +4.0);
				sum *= _Color;
				return sum;
			}
			ENDCG
		}
	}
	Fallback "UI/Unlit/Transparent"
}

Blur材質(zhì)球設(shè)置給Image,然后調(diào)節(jié)材質(zhì)的Size來控制模糊度,設(shè)置Color來控制混合的顏色即可,
【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)
【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)

四、GitHub項目源碼

本文演示的項目源碼可在GitHub中下載,項目地址:https://github.com/BayatGames/RedRunner
【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)文章來源地址http://www.zghlxwxcb.cn/news/detail-448290.html

到了這里,關(guān)于【游戲開發(fā)小技】Unity通過UI全屏圖來模糊場景畫面(Shader | 模糊 | 濾鏡 | Blur)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解決:“Unity打包非全屏游戲,運(yùn)行時仍然全屏” 的問題

    解決:“Unity打包非全屏游戲,運(yùn)行時仍然全屏” 的問題

    前言 ?????? ??我們在使用Unity做游戲的時候,會碰到一些需要固定分辨率的游戲,可是有時候在固定了分辨率以后,打包出來的項目卻一直都是全屏的,那么有什么方法解決呢? 固定分辨率 ????????首先需要固定分辨率,我們可以從左上角 File → Build Settings → Playe

    2024年02月05日
    瀏覽(148)
  • 23. Unity - 3D游戲開發(fā)小計02 --- 動畫結(jié)束UI、導(dǎo)航網(wǎng)格代理、場景搭建插件(ProGrids,ProBuilder,Polybrush)

    23. Unity - 3D游戲開發(fā)小計02 --- 動畫結(jié)束UI、導(dǎo)航網(wǎng)格代理、場景搭建插件(ProGrids,ProBuilder,Polybrush)

    1. 動畫結(jié)束UI 一個游戲在通過后,都是需要一個界面顯示當(dāng)前游戲已經(jīng)結(jié)束,即需要給游戲添加一個結(jié)束的界面,可以做一個簡單的游戲結(jié)束界面,用一個圖片展示: 首先在 層級窗口 添加兩層UI中的Image,其中第一層的Image僅作背景,可將其填充顏色設(shè)置為純黑色,第二層的

    2024年02月05日
    瀏覽(97)
  • Unity UI適配規(guī)則和對熱門游戲適配策略的拆解

    Unity UI適配規(guī)則和對熱門游戲適配策略的拆解

    本文會介紹一些關(guān)于UI適配的基礎(chǔ)概念,并且統(tǒng)計了市面上常見的設(shè)備的分辨率的情況。同時通過拆解目前市面上較為成功的兩款休閑游戲Royal Match和Monopoly GO(兩款均為近期游戲付費(fèi)榜前幾的游戲),大致推斷出他們的適配策略,以供學(xué)習(xí)和參考。 設(shè)計分辨率: 設(shè)計分辨率是指

    2024年03月14日
    瀏覽(27)
  • 【Unity小技巧】手戳一個簡單易用的游戲UI框架(附源碼)

    參考原視頻鏈接: 【視頻】:https://www.bilibili.com/video/BV1zT411b7L3/ 注意 :本文為學(xué)習(xí)筆記記錄,推薦支持原作者,去看原視頻自己手敲代碼理解更加深入 開發(fā)一款游戲美術(shù)成本是極其高昂的,以我們常見的宣傳片CG為例,動輒就要成百上千萬的價格,因此這種美術(shù)物料一般只

    2024年02月11日
    瀏覽(27)
  • Unity中如何通過UI顯示3D模型解決方案?

    Unity中如何通過UI顯示3D模型解決方案?

    需求:實(shí)現(xiàn)將3D模型顯示在2DUI上面,實(shí)現(xiàn)王者榮耀英雄商城之中英雄展示功能,3D模型可以旋轉(zhuǎn),添加特效等正常3D功能。 效果: 那些黑圈圈就是例子特效哦。 ?實(shí)現(xiàn): Project面板創(chuàng)建一個RawImage 創(chuàng)建一個Camera,通過設(shè)置渲染模式控制模型顯示的 創(chuàng)建一個RenderTexture 創(chuàng)建一個

    2024年02月02日
    瀏覽(15)
  • [unity]如何通過代碼獲取UI寬高和屏幕寬高

    [unity]如何通過代碼獲取UI寬高和屏幕寬高

    1.獲取UI寬高 首先,使用GetComponentRectTransform().sizeDelta獲取,但是這樣會有問題,會跟錨點(diǎn)設(shè)置有關(guān),改變設(shè)置后獲取不對 只適用于MiddleCenter 所以又看了API,可以使用GetComponentRectTransform().rect獲取 打印如下: ?2.獲取屏幕寬高 寬度: UnityEngine.Screen.width 高度: UnityEngine.Screen.

    2024年02月17日
    瀏覽(25)
  • Unity游戲開發(fā)之游戲動畫(Unity動畫系統(tǒng))

    Unity游戲開發(fā)之游戲動畫(Unity動畫系統(tǒng))

    Unity動畫系統(tǒng)分為 動畫片段 Animation Clip: 動畫資源,與模型無關(guān) 動畫狀態(tài)機(jī) Animator Controller:幫助我們跟蹤當(dāng)前動畫的播放狀態(tài),并且根據(jù)設(shè)置覺得如何切換動畫片段 動畫組件 Animator Component:玩家角色需要播放動畫功能時,需要動畫組件,將游戲?qū)ο笮枰膭赢嫚顟B(tài)機(jī)(以

    2024年02月13日
    瀏覽(57)
  • Unity3D學(xué)習(xí)之UI系統(tǒng)——用NGUI制作游戲登陸界面

    Unity3D學(xué)習(xí)之UI系統(tǒng)——用NGUI制作游戲登陸界面

    會省略一些東西,可以看我的NGUI的博客 設(shè)置UI分辨率自適應(yīng) 設(shè)置Root 的層級 和攝像機(jī)渲染的層級為UI 主攝像機(jī)不渲染UI 一般都是美術(shù)給一個示意圖,然后按示意圖上拼面板 3.1.1 制作圖集 制作兩個新圖集 3.1.2 拖面板 檢查DrawCall 3.1.3 面板基類 創(chuàng)建面板基類, 首先設(shè)置成單例

    2024年02月19日
    瀏覽(29)
  • Unity游戲開發(fā)之游戲存檔方式

    Unity游戲開發(fā)之游戲存檔方式

    目錄 1.Unity自帶存儲方式PlayerPrefs 2.XML存儲方式 3.Json類型存儲方式 1.Unity的序列化問題 2.Unity中支持序列化的類 3.Unity中Json的使用方法 ?4.SQLite 1.SQLite的一些基礎(chǔ)(簡單介紹,不會深入講解) 2.在Unity中使用SQLite 3.SQLite的優(yōu)劣 結(jié)語 ? ? ? ? 屬于unity自帶的數(shù)據(jù)存儲方法,其形式

    2024年02月06日
    瀏覽(22)
  • 【Unity 框架】QFramework v1.0 使用指南 工具篇:05. ResKit 資源管理&開發(fā)解決方案 | Unity 游戲框架 | Unity 游戲開發(fā) | Unity 獨(dú)立游戲

    【Unity 框架】QFramework v1.0 使用指南 工具篇:05. ResKit 資源管理&開發(fā)解決方案 | Unity 游戲框架 | Unity 游戲開發(fā) | Unity 獨(dú)立游戲

    Res Kit,是資源管理快速開發(fā)解決方案 特性如下: 可以使用一個 API 從 dataPath、Resources、StreammingAssetPath、PersistentDataPath、網(wǎng)絡(luò)等地方加載資源。 基于引用計數(shù),簡化資源加載和卸載。 擁抱游戲開發(fā)流程中的不同階段 開發(fā)階段不用打 AB 直接從 dataPath 加載。 測試階段支持只需打

    2024年02月01日
    瀏覽(58)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包