你知道如何實現游戲中的透視效果嗎?

在這里插入圖片描述

引言

游戲中的透視效果可以合理運用CtrlCV實現。

不知道大家有沒有這樣一段經歷:在做Cocos項目時需要一些特定的Shader去做一些特定的效果,例如透視、高光、濾鏡等等,想自己寫吧,不怎么會啊,網上又找不到,找到了卻又發現是Unity的Shader。。。

本文將通過一個將簡單的UnityShader改成CocosShader來實現游戲中的x光透視效果

本文源碼和源工程在文末獲取,小伙伴們自行前往。

1.什么是X光透視效果?

在這里插入圖片描述

在游戲開發中,X光透視效果通常指的是一種視覺效果,讓玩家或者觀眾能夠穿過物體表面看到其內部結構,就像X光或透視圖一樣。

游戲中的X光透視效果通常用于展示隱藏的物品、地圖的結構、或者在某些情況下用于增加游戲的戰術性,比如讓玩家看到墻后面的敵人位置。

實現這種效果的方法可以是使用特殊的著色器和渲染技術,通過調整渲染層級或者使用特定的材質,使得物體的內部結構能夠透過外部表面顯示出來。

話不多說,一起來看下如何在把UnityShader轉成CocosShader實現x光透視效果

2.一起來實現實現x光透視效果

我們根據以下的步驟一步一步來把UnityShader轉成CocosShader實現x光透視效果:

1.環境

引擎版本:Cocos Creator 3.8.1

編程語言:TypeScript

2.資源準備

首先在我們在網上找一段關于X光透視效果的UnityShader片段。

本次教程CtrlCV的對象

3.CtrlCV前的分析

在寫CocosShader之前我們先簡單分析一下這個Shader片段。

首先定義了Shader的名字Custom/XRayTrans和它的幾個屬性主紋理_MainTex、邊緣顏色_RimColor和邊緣強度_RimPower。可以控制邊緣的顏色以及強度

學會定義

然后是通道的一些簡單設置。包括

  • 設置混合模式Blend SrcAlpha One
  • 關閉深度寫入ZWrite off
  • 關閉光照Lighting off
  • 設置深度測試方法ztest greater

簡單的設置

定義一下輸入和輸出的結構。包括輸入定點位置、紋理坐標、顏色和法線。輸出像素位置和顏色

有進有出

頂點著色器。主要是實現通過視圖方向和法線去計算變量邊緣強度,并設置顏色。

關鍵1,頂點著色器

片元著色器。無特殊操作,直接返回頂點像素顏色。

關鍵2,片元著色器

4.開始CtrlCV

首先打開工程創建一個Shader(Effect)。命名為XRayTrans.effect

有鼠標就行

搜索built找到builtin-unlit效果,雙擊打開并且復制內容到我們的自定義Shader上。

有手就行

我們添加一個通道編寫自己所需要的效果。其中vert_ray對應的自定義的頂點著色器,frag_ray對應的自定義的片元著色器。

有路就行

屬性和前面分析的一樣添加邊緣顏色_RimColor和邊緣強度_RimPower兩個屬性。

不能說一模一樣

還是和前面分析的一樣設置一下混合模式、關閉深度寫入以及設置深度測試方式

簡直就是

頂點著色器vert_ray我們簡單拷貝一下vert,去掉一些不必要的內容,加入我們需要的視圖方向的計算,邊緣強度的計算以及像素顏色的設置。為什么這么寫可以了解下邊緣光或者x光效果。

是不是好像

片元著色器frag_ray也是很簡單,直接把頂點著色器傳進來的內容設置就好。

是真的好像

最后把模型的Shader更換成我們的自定義shaders/XRayTrans。注意設置一下貼圖。

最后的最后

當然了,上述的一些效果,可以直接面板去編輯設置。包括邊緣顏色、邊緣強度、混合模式、關閉深度寫入以及設置深度測試方式

可視化的好處

效果演示

動圖不太清晰,先來個高清大圖,透過石頭可以清楚看到小雞的輪廓。

哪都能看到你

還是要上個動圖的,雖然不方便摸魚,但是這會好看點。小雞自身有點透視效果,知道怎么解決的可以私信我。
在這里插入圖片描述

結語

在哪里可以看到如此清晰的思路,快跟上我的節奏!關注我,和我一起了解游戲行業最新動態,學習游戲開發技巧。

我是"億元程序員",一位有著8年游戲行業經驗的主程。在游戲開發中,希望能給到您幫助, 也希望通過您能幫助到大家。

AD:筆者線上的小游戲《貪吃蛇掌機經典》《重力迷宮球》《填色之旅》大家可以自行點擊搜索體驗。

實不相瞞,想要個在看!請把該文章分享給你覺得有需要的其他小伙伴。謝謝!

推薦專欄:

你知道王者榮耀是怎么實現技能范圍指示器的嗎?

8年主程手把手打造Cocos獨立游戲開發框架

和8年游戲主程一起學習設計模式

從零開始開發貪吃蛇小游戲到上線系列

本文源碼和源工程可通過發送私信ModShader獲取

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165642.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165642.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165642.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

27 - 如何使用設計模式優化并發編程?

在我們使用多線程編程時,很多時候需要根據業務場景設計一套業務功能。其實,在多線程編程中,本身就存在很多成熟的功能設計模式,學好它們,用好它們,那就是如虎添翼了。今天我就帶你了解幾種并發編程中常用的…

redis-cluster集群(目的:高可用)

1、特點 集群由多個node節點組成,redis數據分布在這些節點中,在集群中分為主節點和從節點,一個主對應一個從,所有組的主從形成一個集群,每組的數據是獨立的,并且集群自帶哨兵模式 2、工作原理 集群模式中…

【ZedBoard學習實例1】 VGA顯示彩條

ZedBoard學習實例1 VGA顯示彩條 ZedBoard學習實例1 VGA顯示彩條參考文章改進 ZedBoard學習實例1 VGA顯示彩條 參考文章 彩條控制verilog代碼 主體參考了該文章的代碼,文中還介紹了相關的電路圖,還有ZedBoard的手冊內容。19201080分辨率顯示器的參數 針…

重生之我是一名程序員 37 ——C語言中的棧溢出問題

哈嘍啊大家晚上好! 今天呢給大家帶來一個燒腦的知識——C語言中的棧溢出問題。那什么是棧溢出呢?棧溢出指的是當程序在執行函數調用時,為了保護函數的局部變量和返回地址,將這些數據存儲在棧中。如果函數在函數調用時使用了過多的…

Sentinel核心類解讀:Entry

默認情況下,Sentinel會將controller中的方法作為被保護資源,Sentinel中的資源用Entry來表示。 Sentinel中Entry可以理解為每次進入資源的一個憑證,如果調用SphO.entry()或者SphU.entry()能獲取Entry對象,代表獲取了憑證&#xff…

安卓手機便簽APP用哪個,手機上好用的便簽APP是什么

在日常生活及工作方面,總是有許多做不完的事情需要大家來處理,當多項任務堆疊交叉在一起時,很容易漏掉一些項目,這時候大家會借助經常攜帶的手機來記錄容易忘記的事情,如手機上的鬧鐘、定時提醒軟件都可以用來記錄待辦…

2023亞太杯數學建模A題思路分析 - 采果機器人的圖像識別技術

1 賽題 問題A 采果機器人的圖像識別技術 中國是世界上最大的蘋果生產國,年產量約為3500萬噸。與此同時,中國也是世 界上最大的蘋果出口國,全球每兩個蘋果中就有一個,全球超過六分之一的蘋果出口 自中國。中國提出了一帶一路倡議…

JDK11新特性

目錄 一、JShell 二、Dynamic Class-File Constants類文件新添的一種結構 三、局部變量類型推斷(var ”關鍵字”) 四、新加的一些實用API 1. 新的本機不可修改集合API 2. Stream 加強 3. String 加強 4. Optional 加強 5. 改進的文件API 五、移…

canvas

Canvas 是 Android 中用于繪制圖形的重要類,它提供了許多用于繪制的常用方法。以下是一些常用的 Canvas 方法: 繪制顏色和背景: drawColor(int color): 用指定顏色填充整個畫布。drawRGB(int r, int g, int b): 用 RGB 值指定顏色填充整個畫布…

進程池,線程池與跨進程數據共享爬取某岸網圖片

看教程的時候看到一個,生產者跟消費者的概念比較有意思,但是給的代碼有問題無法正常運行,于是我就搗鼓了一下。 基本概念就是: 生產者: 一個進程獲取網頁沒頁的圖片連接(主進程…

Django框架之中間件

目錄 一、引入 二、Django中間件介紹 【1】什么是Django中間件 【2】Django中間件的作用 【3】示例 三、Django請求生命周期流程圖 四、Django中間件是Django的門戶 五、Django中間件詳解 六、中間件必須要掌握的兩個方法 (1) process_request (2) process_respon…

Redis集群環境各節點無法互相發現與Hash槽分配異常 CLUSTERDOWN Hash slot not served的解決方式

原創/朱季謙 在搭建Redis5.x版本的集群環境曾出現各節點無法互相發現與Hash槽分配異常 CLUSTERDOWN Hash slot not served的情況,故而把解決方式記錄下來。 在以下三臺虛擬機機器搭建Redis集群—— 192.168.200.160192.168.200.161192.168.200.162啟動三臺Redis集…

芯知識 | MP3語音芯片IC的優勢特征及其在現代科技應用中的價值

隨著科技的飛速發展,MP3語音芯片作為一種高度集成的音頻處理解決方案,在現代電子產品中發揮著越來越重要的作用。本文將分析MP3語音芯片的優勢特征,并探討其在各個領域的應用價值。 一、MP3語音芯片的優勢特征 MP3語音芯片具有多種顯著的優…

CC++輸入輸出流介紹

介紹 C中的輸入輸出流主要包括標準輸入輸出流、文件輸入輸出流和內存數據流。 標準輸入輸出流可以通過使用cin和cout進行數據的讀取和輸出文件輸入輸出流可以通過使用ifstream和ofstream對文件進行讀寫操作內存數據流可以通過使用stringstream對字符串進行讀寫操作 應用舉例…

服務器租用收費標準是什么?

服務器在企業轉型中或者是互聯網企業中起著舉足輕重的作用,服務器有強大的存儲能力和計算能力,能夠幫助企業存儲大量信息,完成日常工作,服務器租用就是通過正規的IDC服務器商家那里獲取服務器資源,根據企業自身需求選擇…

Python爬蟲-獲取汽車之家新車優惠價

前言 本文是該專欄的第10篇,后面會持續分享python爬蟲案例干貨,記得關注。 本文以汽車之家新車優惠價為例,獲取各車型的優惠價,示例圖如下: 地址:aHR0cHM6Ly9idXkuYXV0b2hvbWUuY29tLmNuLzAvMC8wLzQyMDAwMC80MjAxMDAvMC0wLTAtMS5odG1sI3B2YXJlYWlkPTIxMTMxOTU= 需求:獲…

OpenStack云計算平臺

目錄 一、OpenStack 1、簡介 2、硬件需求 3、網絡 二、環境搭建 1、安全 2、主機網絡 3、網絡時間協議(NTP) 4、OpenStack包 5、SQL數據庫 6、消息隊列 7、Memcached 一、OpenStack 1、簡介 官網:https://docs.openstack.org/2023.2/ OpenStack系統由…

Zynq-7000系列FPGA使用 Video Processing Subsystem 實現圖像縮放,提供工程源碼和技術支持

目錄 1、前言免責聲明 2、相關方案推薦FPGA圖像處理方案FPGA圖像縮放方案自己寫的HLS圖像縮放方案 3、設計思路詳解Video Processing Subsystem 介紹 4、工程代碼詳解PL 端 FPGA 邏輯設計PS 端 SDK 軟件設計 5、工程移植說明vivado版本不一致處理FPGA型號不一致處理其他注意事項…

給sprite上增加刷光動效

游戲引擎 —— cocos creator 3.52 此動效給動態修改尺寸的圖片增加一層刷光的效果,直接貼代碼 CCEffect %{techniques:- passes:- vert: sprite-vs:vertfrag: sprite-fs:fragdepthStencilState:depthTest: falsedepthWrite: falseblendState:targets:- blend: tr…

Charles 網絡抓包工具詳解與實戰指南

文章目錄 導讀軟件版本Charles基本原理核心功能下載及安裝界面介紹網絡包展示 常用場景介紹PC 端網絡抓包移動端網絡抓包PC 端配置手機端配置 開啟 SSL 代理PC 端和移動端 CA 證書安裝Charles 直接安裝Charles 下載 CA 文件手動安裝 常用操作請求重發請求改寫、動態改寫斷點&am…