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.mzph.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 门级…