1. 程式人生 > >unity中實現一個類似x光掃描效果

unity中實現一個類似x光掃描效果

先來看下效果:


原理很簡單,首先獲取頂點到攝像機的觀察方向,然後與頂點的法線方向進行點積算出投影的長度最後再乘以我們設定的顏色值即為最終要輸出的顏色。這裡要注意觀察方向與法線方向要進行歸一化。

shader程式碼:

Shader "Custom/XLight" {
	Properties {
		_Color ("Color", Color) = (1,1,1,1)
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
	}
    
	SubShader {
		Tags{"IgnoreProjector"="True" "LightMode" = "ForwardBase" "Queue"="Transparent" "RenderType"="Transparent"}  

        Pass  
        {  
            Blend SrcAlpha OneMinusSrcAlpha  
            ZWrite Off  

            CGPROGRAM  

            #include "Lighting.cginc"  
            #pragma vertex vert  
            #pragma fragment frag 

            fixed4 _Color;  
            struct v2f  
            {  
                float4 pos : SV_POSITION;  
                float3 normal : normal;  
                float3 viewDir : TEXCOORD0;  
            };  
          
            v2f vert (appdata_base v)  
            {  
                v2f o;  
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);  
                o.viewDir = ObjSpaceViewDir(v.vertex);  
                o.normal = v.normal;  
                return o;  
            }  
          
            fixed4 frag(v2f i) : SV_Target  
            {  
                float3 normal = normalize(i.normal);  
                float3 viewDir = normalize(i.viewDir);  
                float rim = 1 - dot(normal, viewDir);  
                return _Color * rim;  
            }   
            ENDCG  
        }  
	}
	FallBack "Diffuse"
}

相關推薦

unity實現一個類似x掃描效果

先來看下效果:原理很簡單,首先獲取頂點到攝像機的觀察方向,然後與頂點的法線方向進行點積算出投影的長度最後再乘以我們設定的顏色值即為最終要輸出的顏色。這裡要注意觀察方向與法線方向要進行歸一化。shader程式碼:Shader "Custom/XLight" { Propert

Unity實現一個狀態機

維基百科:有限狀態機(英語:finite-state machine,縮寫:FSM)又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。 本文參照quick

unity實現一個光照越強透明度越高的shader

可能描述的不清楚,先看下效果: 就是這樣,被燈光照亮的部分,會變透明,而且越亮透明度越高。 這裡主要就是通過計算當先位置的法線在燈光方向上的投影大小,投影越大則亮度越高, 因為透明度為0-1,所這裡我們把(1-亮度)作為透明度即可。 完整的shader程式碼: Shad

微信小程式開發常用技巧(7)——實現一個類似於Android toast效果動畫

很多時候,我們在小程式中使用wx.showToast(),發現樣式不是很好看,那麼我們能不能做一個跟原生APP類似的toast呢?答案是肯定的。今天就利用微信小程式的動畫wx.createAnimation()實現一個簡單的類似原生APP的toast提示。 先

如何實現在客戶端或瀏覽器頁面整合一個類似plsqldeveloper一樣的查詢功能?

轉載:https://ask.csdn.net/questions/703108 qq_16127313  https://gitee.com/00fly/effict-side/tree/master/dbtool-springboot 專案運維過程中,受到客戶機房管理

Linux實現一個簡單的進度條【轉】

做的 會有 發現 文件 rsquo 實時 時間 改進 常見 轉自:http://blog.csdn.net/yuehailin/article/details/53999288 說起進度條,其實大家常常見到,比如說你在下載視頻或文件的時候,提示你當前下載進度的就是我們今天

unity一個圖片切割成兩個UI圖片

unity3 mode png 鼠標 eight 圖片效果 height pri unity 1、在unity3D的Project視圖下選中需要更改的圖片,將圖片的Texture Type更改為Sprite (2D and UI),點擊Apply即可。操作如圖所示:

unity實現三個Logo圖片進行3秒鐘的若隱若現後互相切換Logo圖片

date += srp val logs ima 精靈 texture 透明 private List<Sprite> storeTexture; public void Start() { storeTextu

Android音視頻通話過程最小化成懸浮框的實現類似Android8.0畫中畫效果

apk 添加 touch null cas 如果 動態添加 int sta 關於音視頻通話過程中最小化成懸浮框這個功能的實現,網絡上類似的文章很多,但是好像還沒看到解釋的較為清晰的,這裏因為項目需要實現了這樣的一個功能,今天我把它記錄下來,一方面為了以後用到便於自己查閱,一

關於Unity實現繩索物理效果 Obi - Advanced Rope Simulation插件解析

阻尼 旋轉 eval mil 抖動 amp ola all 動作 Obi - Advanced Rope Simulation 繩索插件學習文檔 插件分享: 鏈接:https://pan.baidu.com/s/1eTwZOrg 密碼:p8wa //插件導入有錯誤產生,將

Unite 2018 | 《崩壞3》:在Unity實現高品質的卡通渲染

width diffuse 動態生成 LG 編輯 www. tgs term 謝謝 本篇文章為Unity官方論壇發布的文章 由於全是幹貨,為了方便自己查找,也為了避免刪除找不到了 於是復制了過來。。。 原文地址: http://forum.china.unity3d.c

如何在react實現一個table切換?

PE AR tst === name tab abc 直接 his 廢話不說,直接貼代碼,供新手參考 export default class TabComponent extends Component { constructor(props){ super(prop

在Android實現一個簡易的Http服務器

.get json data ESS public 瀏覽器 顯示 getmethod blank 最近遇到一個需求需要在App中創建一個Http服務器供供瀏覽器調用,用了下開源的微型Htpp服務器框架:NanoHttpd,項目地址:https://github.com/Na

C#或unity實現正弦函式

C#或unity中實現正弦函式 本類用於第一,需要繪製一條正弦曲線的朋友;第二,需要根據正弦曲線控制物體運動的朋友;裡面都有註釋,程式碼如下: unity中使用的程式碼: public class Curvy_Sin { /// <summary> /// 週期

Unity實現控制物體以自定義的速度沿Y軸旋轉90度(也可自定義度數)後停止,然後返回原來位置

1、需要控制沿Y軸旋轉的物體,如下所示: 2、編寫控制該物體旋轉的指令碼,如下所示:  using UnityEngine; using System.Collections; public class Test_CycleRoate : MonoBehaviour {

定義棧的資料結構,請在該型別實現一個能夠得到棧所含最小元素的min函式(時間複雜度應為O(1))。

import java.util.Stack; public class Solution { private Stack<Integer> min_stack=new Stack<Integer>(); private Stack<Integer&

在FORM1視窗建立一個類似cad的視窗要怎麼搞出來

怎麼記錄TextBox中的Text呢Winform怎麼樣經常換圖片怎麼記錄TextBox中的Text呢Winform怎麼樣經常換圖片 關於C#設計一個access資料庫密碼問題C#如何實現一個隨時間增加而不斷推移的心跳資料曲線關於C#設計一個access資料庫密碼問題C#如何

unity實現簡單的程式紋理 10.3.1

using UnityEngine; using System.Collections; using System.Collections.Generic; //在unity中實現簡單的程式紋理 10.3.1 //在編輯模式執行 [ExecuteInEditMo

定義棧的資料結構,請在該型別實現一個能夠得到棧所含最小元素的min函式(時間複雜度應為O(1))

/** 思路:利用兩個棧來實現,一個主棧正常壓棧出棧,一個輔助棧用來儲存主棧所有值的最小值, 壓棧時,當壓入的值比輔助棧棧頂值大時,主棧正常壓棧,輔助棧不壓棧,小於等於二者都壓棧; 出棧時,當主棧和輔助棧棧頂元素不相等時,主棧正常出棧,輔助棧不出棧。 */ class Sol

定義棧的資料結構,請在該型別實現一個能夠得到棧所含最小元素的min函式 (時間複雜度應為O(1))。

import java.util.Stack; /** * 定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式 * (時間複雜度應為O(1))。 */ public class Solution { static Stack<Integer> da