【案例】平面云

news/2024/12/21 21:24:19/

教程案例视频:Unity Shader Graph - 云教程
开发平台:Unity 2022
开发工具:Unity ShaderGraph

一、效果展示


在这里插入图片描述

ShaderGraph__8">二、ShaderGraph 路线图


在这里插入图片描述

三、案例分析


核心思路:使用 Noise(噪声)模拟云层状态

3.1 说明 | 云层运动

在这里插入图片描述
云层的最终表现输出为 Fragment 下 Base Color。
云层的自身表现属于多规则无序性质。则 Noise(噪声)是最佳的实现节点。ShaderGraph 提供累计3种的 Noise Node(噪声节点)可用。

  • (视情况均可选择,此处选择 Simple Noise 作为使用)
  • 在过去开发中,也有直接使用静态噪声纹理图作为 Sample Texture(纹理输入)的情况。


Simple Noise Node(简易噪声)提供 Scale 的输入变量管理噪声程度。因此需要新建 Cloud Scale 变量管理。
Simple Noise Node(简易噪声)提供 UV 的输入管理噪声图的运动表现。当需要噪声图动态变化以模拟动态云层图时,需要输入该变量。如上图所示加入了 Tilling And Offset (平铺与偏移)管理运动方向与速度。

当期望位移幅度可控时,需要对 Tilling And Offset(平铺与偏移)中的 Offset(偏移)进行输入管理。但为了模拟动态云层效果,加入了 Timer(计时器)的计时器节点。但计时器本身不具备控制偏移的发生与程度。加入 Cloud Speed 变量管理运动方向与速度。于是, Multiple(乘法)节点的作用是将结果值乘法以最终输入。得到的 Offset(偏移)在 Timer(计时器)作用下为一个持续动态变化值。

Power(幂函数),为了控制颜色厚度表现的重要值。因此加入 Cloud Power 控制云层颜色深度。同理将输出值与 Cloud Color 相乘作为最终的颜色输出效果。

3.2 说明 | 云层区域透明化表现

在这里插入图片描述
云层并非全覆盖,实际情况表现为部分区域保持透明效果。需设置 Shader Graph - Surface Type = Transport (透明模式)。在此模式下的 Fragment 中将新增 Alpha (透明度)的可管理选项。

最终云层图的输出在 Power (幂函数)中完成,因此获取该输入值。接入 Alpha 中。在实际情况中,为了控制透明度,新建了 Cloud Alpha 变量管理。

3.3 说明 | 云层消融表现

在这里插入图片描述
在 3.1 中仅仅实现云层的移动,即固定狀云的移动表现。实际观察云层在移动中也有着形状变化的差异。因此,在效果上增加一组 Noise Node 噪声来制作另一组图层叠加至原图层上混合输出达到目的。

新建的图层项的变量与原图层相似,但不再受原变量管理控制。混合后的图层通过 Multiple(乘法)输出至 Powder 计算最终输入至 Alpha 即可。为保证效果的良好,两组图层的变量数据应尽可能保持不一。


http://www.ppmy.cn/news/1536982.html

相关文章

【HarmonyOS】HMRouter使用详解(一)环境配置

背景 在项目中使用官方推荐的Navigation时,需要在所有的页面上都添加一层NavDestination,在代码阅读上会增加多个层级,而且还要在主页面设置对应名字的跳转等问题,配置起来比较繁琐。看到大佬开发的HMRouter使用起来方便简洁&…

阿里云NAS之间迁移实践

本文将介绍如何通过LocalFs的最佳实践来进行阿里云NAS之间数据的迁移。 概述 阿里云提供的在线迁移服务是一种存储产品数据通道,客户有时需要在阿里云NAS之间进行数据迁移。本文档详细介绍了针对这一场景的相关内容。 警告 迁移过程数据不保证数据一致性&#x…

重学SpringBoot3-集成Redis(十一)之地理位置数据存储

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(十一)之地理位置数据存储 1. GEO 命令简介2. 项目环境配置2.1. 依赖引入2.2. Redis 配置 3. GEO 数据存储和查询实现3…

whistle使用实践

whistle使用实践 1.简介2.安装启动whistle3.配置代理流转浏览器流量4.访问whistle控制台5.安装https证书6.whistle使用方法控制台界面各个模块的作用代理配置方式匹配模式pattern代理IP例子1.简介 Whistle 是一个基于 Node.js 开发的网络代理工具,主要用于网络请求的代理、调…

【Sqlite】sqlite内部函数sqlite3_value_text特性

目录 ⚛️1 结论 ☪️2 说明 ☪️3 传入数值转成科学计数法 ♋3.1 只有整数部分 ♏3.2 只有小数部分 ♐3.3 整数小数 ⚛️1 结论 整数(sqlite视为int64)位数 > 20位,sqlite3_value_text 采用科学计数法。否则正常表示。 浮点数(sqlite视为double)的整数部…

Python 全栈开发从入门到实战进阶课程

需要课程的,添加文本末尾的联系方式。 以下是一份关于该课程的文档,其中加入了一些具体的代码示例: 《Python 全栈开发从入门到实战进阶课程》介绍 一、课程概述 本课程涵盖了 Python 编程的多个方面,包括编程基础、数据结构、…

vue3实现excel文件预览和打印功能

文章目录 一、预览excel1、安装2、使用3、代码4、效果二、打印excel1、安装2、使用3、代码4、效果三、小结在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文将介绍在vue3中如何实现Excel文件的预览和打印。 一、预览excel 关于实现excel文…

线性回归逻辑回归-笔记

一、线性回归(Linear Regression) 1. 定义 线性回归是一种用于回归问题的算法,旨在找到输入特征与输出值之间的线性关系。它试图通过拟合一条直线来最小化预测值与真实值之间的误差。 2. 模型表示 线性回归模型假设目标变量(输…