Unity中URP下實現水體(C#動態生成漸變圖)

文章目錄

  • 前言
  • 一、Shader部分
    • 1、申明水漸變圖紋理和采樣器
    • 2、在片元著色器,進行紋理采樣,并且輸出
  • 二、C#腳本部分
    • 1、我們新建一個C#腳本
    • 2、我們定義兩個變量
    • 3、在Start內,new 一個Texture2D(寬,高)
    • 4、定義一個Color[寬*高]的顏色數組
    • 5、使用循環,依次給顏色數組,填入傳入的漸變色
    • 6、 使用顏色數組,生成紋理
    • 7、把該紋理傳入Shader對應的材質球紋理中
  • 三、最終代碼
    • C#腳本


前言

在之前的文章中,我們已經完成了URP下水體的所有效果。

  • Unity中URP實現水體(整理優化)

但是,水的顏色用一個變量來控制讓水深淺顏色漸變變化,太過于單調。
所以,我們可以使用紋理采樣的方式來替換水的顏色。
這個紋理可以由C#來動態生成漸變圖,以達到隨機的效果。


一、Shader部分

因為,該紋理是用C#代碼傳入。所以,屬性面板可以不用定義該紋理。
在hlsl中,申明紋理和采樣器即可

1、申明水漸變圖紋理和采樣器

TEXTURE2D(_WaterColorTex);
SAMPLER(sampler_WaterColorTex);

2、在片元著色器,進行紋理采樣,并且輸出

float4 waterTex = SAMPLE_TEXTURE2D(_WaterColorTex,sampler_WaterColorTex,i.uv.xy);
return waterTex;


二、C#腳本部分

1、我們新建一個C#腳本

2、我們定義兩個變量

  • 漸變色傳入(這是Unity的API)

public Gradient waterGradient;

  • 定義需要動態生成的紋理

public Texture2D rampTexture;

3、在Start內,new 一個Texture2D(寬,高)

rampTexture = new Texture2D(512, 256);

4、定義一個Color[寬*高]的顏色數組

Color[] colors = new Color[rampTexture.width * rampTexture.height];

5、使用循環,依次給顏色數組,填入傳入的漸變色

for (int i = 0;i < colors.Length;i++)
{
colors[i] = waterGradient.Evaluate((float)i/colors.Length);
}

6、 使用顏色數組,生成紋理

rampTexture.SetPixels(colors);
rampTexture.Apply();

7、把該紋理傳入Shader對應的材質球紋理中

this.GetComponent().material.SetTexture(“_WaterColorTex”,rampTexture);

在這里插入圖片描述


三、最終代碼

C#腳本

using System;
using UnityEngine;
using Random = UnityEngine.Random;namespace Arts.Shader.URP.P4.P4_8
{public class WaterColor : MonoBehaviour{[Header("水體顏色漸變")]public Gradient waterGradient;public Texture2D rampTexture;//Start is called before the first frame updatevoid Start(){rampTexture = new Texture2D(512, 256);Color[] colors = new Color[rampTexture.width * rampTexture.height];for (int i = 0;i < colors.Length;i++){colors[i] = waterGradient.Evaluate((float)i/colors.Length);}rampTexture.SetPixels(colors);rampTexture.Apply();this.GetComponent<MeshRenderer>().material.SetTexture("_WaterColorTex",rampTexture);}}
}

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

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

相關文章

CCS ‘23 論文清單與摘要

網絡安全學術頂會——CCS 23 論文清單與摘要 1、“Get in Researchers; We’re Measuring Reproducibility”: A Reproducibility Study of Machine Learning Papers in Tier 1 Security Conferences 可復現性對科學的進展至關重要&#xff1b;它增強了對看似矛盾結果的信心&…

企微hook源碼第二彈

免費的企微框架&#xff0c;可下載測試。 支持文本消息&#xff0c;圖片消息&#xff0c;視頻消息&#xff0c;文件消息。 有興趣可以進群交流。649480745&#xff0c;群內不定期開源企微hook源碼 接下來就是第二彈的企微hook源碼。后續會在群內開源完整源碼。

diskMirror-backEnd-spring-boot | diskMirror 后端服務器 SpringBoot 版本!

diskMirror-backEnd-spring-boot 開源技術欄 diskMirror 后端服務器 SpringBoot 版本! 此版本中拓展了 DiskMirrorBackEnd&#xff0c;是一個完全的SpringBoot項目&#xff01; 目錄 diskMirror-backEnd-spring-boot 目錄我如何使用&#xff1f; 部署與配置我如何使用其中的…

Java+SpringBoot+Vue:志愿服務的數字化之旅

??計算機畢業編程指導師 ??個人介紹&#xff1a;自己非常喜歡研究技術問題&#xff01;專業做Java、Python、微信小程序、安卓、大數據、爬蟲、Golang、大屏等實戰項目。 ??實戰項目&#xff1a;有源碼或者技術上的問題歡迎在評論區一起討論交流&#xff01; ?? Java、…

理想汽車狂飆18%,造車新勢力洗牌

2月27日&#xff0c;#理想汽車狂飆18%#話題沖上熱搜&#xff1b;前一日&#xff0c;理想汽車(02015.HK)公布了2023年第四季度及全年財報。盡管其營收凈利雙增長&#xff0c;但業績增長背后仍有隱憂。 「不二研究」據其2023年報發現&#xff1a;2023年&#xff0c;理想汽車研發…

24計算機考研調劑 | 北京聯合大學

北京聯合大學自動駕駛方向招生調劑 考研調劑招生信息 學校:北京聯合大學 專業:工學->電子信息->計算機應用技術 工學->計算機科學與技術 年級:2024 招生人數:10 招生狀態:正在招生中 聯系方式:********* (為保護個人隱私,聯系方式僅限APP查看) 補充內容 研究…

【辦公類-25-01】20240302 UIBOT上傳 ”班級主頁-育兒知識(家園小報)“

作品展示&#xff1a; 一、背景需求&#xff1a; 本學期制作了 “育兒知識&#xff08;家園小報&#xff09;”合并A4內容 【辦公類-22-08】周計劃系列&#xff08;4&#xff09;“育兒知識&#xff08;家園小報&#xff09;“ &#xff08;2024年調整版本&#xff09;-CSDN博…

從圖像中提取特征的過程時,一些常用的用于描述的詞語

提取&#xff08;Extract&#xff09;&#xff1a; 描述模型從輸入數據中獲取關鍵信息或特征的過程。例如&#xff0c;特征提取層可以從原始圖像中提取特定的模式或結構。 捕獲&#xff08;Capture&#xff09;&#xff1a; 表示模型通過學習能夠捕獲圖像中的關鍵信息&#xf…

【論文閱讀】Usenix Security 2023 你看不見我:對基于激光雷達的自動駕駛汽車駕駛框架的物理移除攻擊

文章目錄 一.論文信息二.論文內容1.摘要2.引言3.作者貢獻4.主要圖表5.結論 一.論文信息 論文題目&#xff1a; You Can’t See Me: Physical Removal Attacks on LiDAR-based Autonomous Vehicles Driving Frameworks&#xff08;你看不見我:對基于激光雷達的自動駕駛汽車駕駛…

HCIA-HarmonyOS設備開發V2.0證書

目錄 一、不墨跡&#xff0c;上證書二、考試總結三、習題四、知識點五、堅持就有收獲 HCIA-HarmonyOS Device Developer V2.0 開發者能力認證考試已通過。 一、不墨跡&#xff0c;上證書 一個多月的努力&#xff0c;驗證了自己的學習成果&#xff0c;也認識到自己有待提升之處…

微軟AI文生圖新突破,用于圖像生成的多LoRA組合訓練模型Multi-LoRA-Composition

微軟近期在文本至圖像生成領域取得了一項重要突破&#xff0c;通過引入多重低秩適應&#xff08;LoRA&#xff09;技術&#xff0c;成功地創造出了高度個性化和細節豐富的圖像。這一研究不僅為我們帶來了全新的圖像生成方法&#xff0c;還為我們提供了一種基于GPT-4V的圖像質量…

switch開關語句

定義 單條件多分支的開關語句。 格式定義 switch(表達式) { case 常量值1: 若干個語句 break; ... case 常量值n: 若干個語句 break; default: 若干語句 } ★注意★&#xff1a; ① 表達式的值必須與int兼容類型&#xff1a; byte&#xff0c;short&#xff0c;int&#xff…

柔柔弱弱人人人

? 通用計算機啟動過程 1??一個基礎固件&#xff1a;BIOS 一個基礎固件&#xff1a;BIOS→基本IO系統&#xff0c;它提供以下功能&#xff1a; 上電后自檢功能 Power-On Self-Test&#xff0c;即POST&#xff1a;上電后&#xff0c;識別硬件配置并對其進行自檢&#xff0c…

django項目中使用ON DUPLICATE KEY UPDATE 來進行數據庫批量插入

如果在遇到property_index字段沖突時更新其他所有字段&#xff0c;使其在ON DUPLICATE KEY UPDATE子句中明確指定除了property_index以外的所有字段應該如何更新。這意味著你需要構建一個更新賦值的列表&#xff0c;其中不包括property_index字段。 from django.db import con…

【RISC-V 指令集】RISC-V DSP 擴展指令集介紹(一)

前言&#xff1a; 本筆記是基于對RISC-V DSP擴展指令集文檔總結的&#xff0c;《P-ext-proposal.pdf》文檔的關鍵內容如下&#xff1a; 主要介紹了RISC-V的P擴展指令集及其相關細節。 首先&#xff0c;對P擴展指令進行了概述&#xff0c;并列出了其與其他擴展重復的指令。 …

關于NAT的幾種類型

NAT網絡地址轉換&#xff08;Network Address Translation&#xff09;主要用于解決IP地址不足而提出的&#xff0c;NAT主要有以下幾類 1、S-NAT&#xff08;Source Network Address Translation&#xff09;基于源地址的NAT 2、D-NAT&#xff08;Destination Network Addres…

串及BF樸素查找算法(學習整理):

關于串的相關定義&#xff1a; 串&#xff1a;用‘ ’表示的字符序列空串&#xff1a;包含零個字符的串子串&#xff1a;包含傳本身和空串的子串 eg: abc(,a,b,c,ab,bc,ac,abc)共7個&#xff1a;串的長度的階乘1&#xff08;空串&#xff09;真子串&#xff1a;不包含自身的所…

解讀OWASP應用安全驗證標準ASVS

OWASP應用程序安全驗證標準&#xff08;OWASP Application Security Verification Standard&#xff0c;ASVS&#xff09;為測試web應用程序技術安全控制提供了基礎&#xff0c;還為開發人員提供了安全開發的要求列表。 1. 簡介 OWASP應用安全驗證標準&#xff0c;是一份測試應…

電子電氣架構——AUTOSAR架構下EcuM喚醒源事件詳解

電子電氣架構——AUTOSAR架構下EcuM喚醒源事件詳解 我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 沒有人關注你。也無需有人關注你。你必須承認自己的價值,你不能站在他人的角度來反對自己。人…

Verilog原語、Verilog保留關鍵字

Verilog基元 Vivado合成支持Verilog門級原語&#xff0c;下表所示除外。 Vivado合成不支持Verilog開關級原語&#xff0c;例如以下原語&#xff1a; cmos、nmos、pmos、rcmos、rnmos、rpmos rtran、rtranif0、rtranif1、tran&#xff0c; tranif0&#xff0c;tranif1 門級…