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

unity 利用Graphics.Blit來制作圖片效果

這篇具有很好參考價值的文章主要介紹了unity 利用Graphics.Blit來制作圖片效果。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

c# 的代碼

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GraphicsBlitTest : MonoBehaviour
{
    public Texture2D source;//原紋理
    public Material material;//效果材質(zhì)

    public RawImage rawImage;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            UseBlit();
        }
    }

    void UseBlit(){
        material.SetFloat("_HalfPixelX", 0.005f);
		material.SetFloat("_HalfPixelY", 0.008f);
        RenderTexture renderTexture = RenderTexture.GetTemporary(source.width,source.height,0);
        RenderTexture renderTexture1 = RenderTexture.GetTemporary(source.width,source.height,0);
        Graphics.Blit(source,renderTexture,material,0);//renderTexture就是經(jīng)過材質(zhì)shader之后的效果
        // Graphics.Blit(renderTexture,renderTexture1,material,1);
        // RenderTexture.active = renderTexture;
        // Texture2D texture2D = new Texture2D(renderTexture.width,renderTexture.height,TextureFormat.ARGB32,false);
        // texture2D.ReadPixels(new Rect(0,0,renderTexture.width,renderTexture.height),0,0);
        // texture2D.Apply(false);
        rawImage.texture = renderTexture;
    }
}

source可以是當前相機的RenderTexture也可以是準備好的一張圖,然后利用material提供的效果將效果輸出到renderTexture,第三個參數(shù)是使用哪個pass 0表示是使用第一個

下面是例子對應(yīng)的shader,是一個模糊效果文章來源地址http://www.zghlxwxcb.cn/news/detail-810914.html

Shader "JJ/ImageEffect/DualFilterBlur"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        // No culling or depth
        Cull Off ZWrite Off ZTest Always

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

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

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
			v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

			sampler2D _MainTex;
			float _HalfPixelX;
			float _HalfPixelY;

			fixed4 Downsample(float2 uv)
			{
				//原理是取相鄰節(jié)點,最后取平均顏色
				float2 UV;
				fixed4 sum;
				sum = tex2D(_MainTex, uv) * 4.0;
				UV = float2(uv.x - _HalfPixelX, uv.y - _HalfPixelY);
				sum += tex2D(_MainTex, UV);
				UV = float2(uv.x + _HalfPixelX, uv.y + _HalfPixelY);
				sum += tex2D(_MainTex, UV);
				UV = float2(uv.x + _HalfPixelX, uv.y - _HalfPixelY);
				sum += tex2D(_MainTex, UV);
				UV = float2(uv.x - _HalfPixelX, uv.y + _HalfPixelY);
				sum += tex2D(_MainTex, UV);
				return sum * 0.125;
			}

			fixed4 frag (v2f i) : SV_Target
			{
				return Downsample(i.uv);
			}
			ENDCG
		}
		
		//pass 1
		Pass 
		{ 
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag

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

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
			v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

			sampler2D _MainTex;
			float _HalfPixelX;
			float _HalfPixelY;
			float _MaskPower;
			fixed4 Upsample(float2 uv) 
			{
				float2 UV;
				fixed4 sum;
				UV = float2(uv.x - _HalfPixelX * 2.0, uv.y);
				sum = tex2D(_MainTex, UV);
				UV = float2(uv.x - _HalfPixelX, uv.y + _HalfPixelY);
				sum += tex2D(_MainTex, UV) * 2.0;
				UV = float2(uv.x, uv.y + _HalfPixelY * 2.0);
				sum += tex2D(_MainTex, UV);
				UV = float2(uv.x + _HalfPixelX, uv.y + _HalfPixelY);
				sum += tex2D(_MainTex, UV) * 2.0;
				UV = float2(uv.x + _HalfPixelX * 2.0, uv.y);
				sum += tex2D(_MainTex, UV);
				UV = float2(uv.x + _HalfPixelX, uv.y - _HalfPixelY);
				sum += tex2D(_MainTex, UV) * 2.0;
				UV = float2(uv.x, uv.y - _HalfPixelY * 2.0);
				sum += tex2D(_MainTex, UV);
				UV = float2(uv.x - _HalfPixelX, uv.y - _HalfPixelY);
				sum += tex2D(_MainTex, UV) * 2.0;
				sum /= 12.0;
				sum.rgb *= (1-_MaskPower);
				sum.a = 1;
				return sum;
			}
			fixed4 frag(v2f i) : SV_Target 
			{
				return Upsample(i.uv);
			}
			ENDCG
		}
    }
}

到了這里,關(guān)于unity 利用Graphics.Blit來制作圖片效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【用unity實現(xiàn)100個游戲之1】制作類元氣騎士、挺進地牢——俯視角射擊游戲多種射擊效果(一)(附源碼)

    【用unity實現(xiàn)100個游戲之1】制作類元氣騎士、挺進地牢——俯視角射擊游戲多種射擊效果(一)(附源碼)

    參考原視頻鏈接 【視頻】:https://space.bilibili.com/641773200 注意 :本文為學(xué)習(xí)筆記記錄,推薦支持原作者,去看原視頻自己手敲代碼理解更加深入 近幾年 俯視角射擊游戲 隨著《挺進地牢》等雙搖桿射擊游戲的火熱再次出現(xiàn)在玩家的視野中,這類游戲通常都有種類繁多的 武器

    2024年02月12日
    瀏覽(23)
  • 【用unity實現(xiàn)100個游戲之1】制作類元氣騎士、挺進地牢——俯視角射擊游戲多種射擊效果(二)(附源碼)

    參考原視頻鏈接 : 【視頻】:https://space.bilibili.com/641773200 注意 :本文為學(xué)習(xí)筆記記錄,推薦支持原作者,去看原視頻自己手敲代碼理解更加深入

    2024年02月07日
    瀏覽(32)
  • 用Unity3D制作FPS游戲的學(xué)習(xí)筆記————人物移動、利用鼠標實現(xiàn)視角轉(zhuǎn)動和人物跳躍(含人物懸空不掉落修復(fù))

    用Unity3D制作FPS游戲的學(xué)習(xí)筆記————人物移動、利用鼠標實現(xiàn)視角轉(zhuǎn)動和人物跳躍(含人物懸空不掉落修復(fù))

    前言: 這是我第一次發(fā)布文章,此文章僅供參考,我也是剛學(xué)習(xí)接觸untiy,在制作項目的過程中將有用的寫下來記一記,以便自己之后能回頭看看,各位大佬輕點噴,若有錯誤請麻煩積極提謝謝各位。該文章參考自B站UP主蔡先森_rm-rf發(fā)布的 【第一人稱射擊游戲教程2.0【已完結(jié)

    2024年04月27日
    瀏覽(24)
  • Unity 轉(zhuǎn)微信小游戲Error building Player: Incompatible color space with graphics API

    Unity 轉(zhuǎn)微信小游戲Error building Player: Incompatible color space with graphics API

    Unity 開發(fā) 微信小游戲,進行轉(zhuǎn)換小游戲時報Error building Player: Incompatible color space with graphics AP錯誤,主要原因是不兼容WEBGL2.0。 需要在 Unity Editor中File-Build settings-Player Settings中設(shè)置Color space為Gamma。默認值是Linear這需要WebGL2.0支持。 勾選選項WebGL2.0(Beta)選項。也可解決上述問題

    2024年02月14日
    瀏覽(25)
  • 如何制作自己的C++游戲引擎

    你想了解更多關(guān)于游戲引擎的知識、并自己來寫一個嗎? 這可是非常牛皮的一件事。為了幫助你學(xué)習(xí),這里有一些C++庫和依賴項的推薦,可以幫助你快速上手。 游戲開發(fā)一直是我的學(xué)生學(xué)習(xí)更高級計算機科學(xué)主題的好幫手。我的一位導(dǎo)師Sepi博士曾經(jīng)說過: “有些人認為游戲

    2023年04月08日
    瀏覽(24)
  • 利用ArcGIS Pro制作三維效果圖

    利用ArcGIS Pro制作三維效果圖

    1、新建工程 打開Arcgispro,新建工程,這里我們要用到的模板為全局場景。 這里添加的數(shù)據(jù)需要有一個字段內(nèi)容是數(shù)值的,這個字段也是接下來要進行拉伸的字段。 3、高度拉伸 數(shù)據(jù)添加進來后,如下圖所示,這時圖層處于2D圖層里。 這時我們點中該圖層,回到菜單欄,點擊

    2024年02月16日
    瀏覽(91)
  • vue制作點擊切換圖片效果

    vue制作點擊切換圖片效果

    思路 創(chuàng)建一個數(shù)組,數(shù)組里面放入圖片,利用props(父組件向子組件傳值),v-for(循環(huán)),v-bind(綁定屬性)將圖片傳入HTML定義的div中。 Ⅰ.在頭部導(dǎo)入vue文件(導(dǎo)入前提是vue文件已被引入js中) Ⅱ.在HTML中創(chuàng)建一個z-div(可根據(jù)自己喜好命名),用來接收組件的傳值,用

    2024年02月06日
    瀏覽(27)
  • 關(guān)于Godot游戲引擎制作流水燈

    關(guān)于Godot游戲引擎制作流水燈

    先上核心代碼 ?游戲節(jié)點 ? ?流水燈的通途可以是 1. 裝飾 2. 音樂類多媒體程序(如FL中TB-303的步進燈) FL Studio Transistor Bass

    2024年02月14日
    瀏覽(93)
  • 利用VBA制作一個轉(zhuǎn)盤游戲之五:最終的游戲過程

    利用VBA制作一個轉(zhuǎn)盤游戲之五:最終的游戲過程

    【分享成果,隨喜正能量】真正厲害的人,從來不說難聽的話,因為人心不需要聽真話,只需要聽好聽的話,所以學(xué)著做一個有溫度且睿智的人。不相為謀,但我照樣能心平氣和,冷眼相待,我依舊可以風(fēng)生水起,你所見皆是我,好與壞,我都不反駁。。 《VBA高級應(yīng)用30例》

    2024年02月15日
    瀏覽(23)
  • 利用html做一個3D 圖片動態(tài)效果

    今天分享一個3D圖片動態(tài)效果 不多廢話上代碼 在倒數(shù)第6行src=后是圖片地址 可以自行更改 如有侵權(quán)請聯(lián)系352648773@qq.com郵箱 插一條:如果有人想要一些好玩的腳本(vbs,bat,html)同樣聯(lián)系我郵箱

    2024年02月11日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包