Unity Shader Graph基础包200+节点及术语解释

目录

[Master Stack:](#Master Stack:)

[Vertex block:](#Vertex block:)

[Fragment block​编辑](#Fragment block编辑)

[Alpha Clip Threshold](#Alpha Clip Threshold)

[Dither transparency](#Dither transparency)

[Graph Inspector](#Graph Inspector)

[Texture 2d Array/Texture 3d](#Texture 2d Array/Texture 3d)

[Virtual Texture](#Virtual Texture)

[Sampler State](#Sampler State)

Keywords

[Boolean keyword](#Boolean keyword)

右键显示所有节点

[简化测试系列节点:Slider Time Constant](#简化测试系列节点:Slider Time Constant)

[sample texture 2d](#sample texture 2d)

[Virtual Texture 的基本概念:](#Virtual Texture 的基本概念:)

Texel

Scene系列节点

[矩阵节点 Input/Matrix Nodes](#矩阵节点 Input/Matrix Nodes)

[World space difference](#World space difference)

[Dielectric specular](#Dielectric specular)

[HDRP(High Definition Render Pipeline)和URP(Universal Render Pipeline)](#HDRP(High Definition Render Pipeline)和URP(Universal Render Pipeline))

[1. 目标平台和性能](#1. 目标平台和性能)

[2. 视觉效果和渲染质量](#2. 视觉效果和渲染质量)

[3. 可扩展性和灵活性](#3. 可扩展性和灵活性)

[4. 开发复杂度](#4. 开发复杂度)

[5. 未来发展](#5. 未来发展)

[Channel Node](#Channel Node)

Swizzle

[1. 通道重映射和数据转换](#1. 通道重映射和数据转换)

[2. 简化计算](#2. 简化计算)

[3. 性能优化/简化代码逻辑](#3. 性能优化/简化代码逻辑)

[4. 视觉特效](#4. 视觉特效)

举例:

[Unity中的Channel Node 对应到 Unreal Engine 中的节点:](#Unity中的Channel Node 对应到 Unreal Engine 中的节点:)

伪随机数与真正随机数的区别

为什么伪随机数常用?

总结

三角学

[1. 数学中的双曲性(Hyperbolic Geometry):](#1. 数学中的双曲性(Hyperbolic Geometry):)

[2. 日常用语中的夸张(Exaggeration):](#2. 日常用语中的夸张(Exaggeration):)

例句:

总结:

Posterize

[1. 图像处理:](#1. 图像处理:)

[2. 艺术和设计:](#2. 艺术和设计:)

[3. 其他含义:](#3. 其他含义:)

例句:

总结:

[Procedual/ value noise& perlin noise](#Procedual/ value noise& perlin noise)

[Logic node](#Logic node)


Sample Virtual Texture Node | Shader Graph | 13.1.9https://docs.unity3d.com/Packages/com.unity.shadergraph@13.1/manual/Sample-Virtual-Texture-Node.html

Master Stack:

++Master stack++(Node汇总/着色器图的终点)

The stack has two sets of blocks:Vertex blocks and Fragment Blocks

两组模块:顶点模块和片段模块

Vertex block:

Position block defines the vertex position of the mesh.

We can modify this Vector3 to physically change the location of those vertices in the world.
可以用来做ocean效果

The normal block defines which direction the vertex normal points in (法线模块定义了顶点法线的指向)if change this block,lighting on your object may change too.

The vertex tagent (顶点切线)is usually perpendicular to the vertex normal vector , and for a flat surface。("rests on" "贴在",表示切线沿物体表面平行分布)if you modify the normal vector, its best to make sure your tangent vector still points in a sensible direction.

Fragment block

Workflow处改Specular/Metalic,改变fragment block的选项

Alpha Clip Threshold

TICK ALPHA CLIP IN GRAPH SETTING

Alpha Clip Threshold is useful for fake-transparency effects where you use opaque rendering, but you cull certain pixels to give the illusion of transparency

Dither transparency

Dither transparency 中的 "dither" 是指一种在图形渲染中常用的技术,叫做抖动(Dithering)。它的作用是通过混合不同颜色或透明度的像素,创建出一种平滑的过渡效果,减少色彩带状(banding)或不连续的边缘。

在透明度中的作用 :在 dither transparency 中,抖动用于透明效果的渲染。例如,在没有足够的透明度级别时,通过++对像素的不透明和完全透明的混合,生成类似半透明的视觉效果。++这种技术通过分散或交错的像素布局,模拟出平滑的透明过渡。

Graph Inspector

Percision: single generally uses 32 bits, while half typically uses 16 bits, although it may differ by hardware

【Precision 】设置决定了数值计算的精度与性能之间的权衡。选择 Single 提供高精度运算,适合需要精确结果的复杂场景,而 Half 提供性能优化,适合需要更高效率但对精度要求较低的场景。选择时需要根据应用场景的精度需求和性能考虑来权衡。

Texture 2d Array/Texture 3d

graph检视器 (Texture2dArray)

A Texture 2D Array is a set of 2d textures with the ++same size and format++ that have been packaged together, so that the GPU can read them as if they are a single texture, for ++increased efficiency++

Virtual Texture

Virtual Texture is a way to reduce memory usage if you have several high-res textures

只被HDRP支持

Sampler State

Mirror is like repeat but the texture reflects each time the boundary is crossed, and MirrorOnce is like Mirror, but gets clamped past one reflection. (Sampler States can't be exposed to the inspector either.)

Keywords

Boolean keyword

A ++Boolean keyword++ is either true or false, so using one will result in two shader variants
Boolean Keywords

Depending on the definition, the shader acts differently:

shader feature, will strip any unused shader variants at compile time thus removing them.

Multi compile will always build all variants ;

Predefined can be used when the current Render Pipeline has already defined the keyword.so it doesn't get redefined in the generated shader code. that might otherweise cause a shader error.

右键显示所有节点

简化测试系列节点:Slider Time Constant

PI,

TAU(eual to two pi)

PHI(which is golden ratio)

E(Euler's number)

SQRTZ( square root of two)

sample texture 2d

Virtual Texture 的基本概念:

  1. 按需加载(On-Demand Loading)

    不会一次性将整个大纹理加载到显存中,而是根据摄像机视角、距离和场景需求,只加载和显示当前可见部分的纹理。这样,系统可以在有限的显存内处理非常大分辨率的纹理。++能显著减少显存的占用,同时避免 GPU 一次性处理巨大的纹理数据。++对大规模开放世界场景或高精度纹理需求的项目特别有用。

  2. 分块处理(Tiling/Chunking)

    将大纹理切分成小的纹理块(tiles),并且只有当前需要显示的那些块会被加载和渲染。其他不可见的区域将保持低分辨率或不加载。

  3. 流式加载(Streaming)

    虚拟纹理支持流式加载,意味着它们可以在运行时根据需要加载更高分辨率的纹理块。当玩家接近物体时,高分辨率的纹理块会被加载进显存,远处的纹理则保持低分辨率或不加载。

Texel

Texeltexture element 的缩写,意思是"纹理元素",它表示一个纹理图像中的最小单位,类似于图像中的像素。

can be thought of analogous to pixel, which is actually short of 'picture element':类似地,pixel是picture element的缩写

Scene系列节点

矩阵节点 Input/Matrix Nodes

World space difference


World space在URP中和Absolute World是一样的。but HDRP uses camera-relative rendering by default.

Gradient 系列节点

Dielectric specular

Dielectric Specular 是与材质的光反射特性相关的一个概念,主要用于定义非金属(dielectric )材质的镜面反射(specular )属性。在计算机图形学中,物体的材质通常被分为两大类:导电材质(conductive materials)非导电材质(dielectric materials)Dielectric 这个词通常指的是非金属材质,例如塑料、木头、玻璃等。

HDRP系列节点

HDRP节点

HDRP(High Definition Render Pipeline)和URP(Universal Render Pipeline)

是Unity引擎中的两种渲染管线,分别适用于不同类型的项目。以下是它们的主要区别:

1. 目标平台和性能

  • HDRP :设计用于高端硬件,目标平台主要是++PC、主机和其他高性能设备++。它能够实现非常精致的光照和视觉效果,适合需要高质量图形的游戏和应用,如AAA游戏和建筑可视化项目。
  • URP :则更注重跨平台兼容性和性能优化,++适用于移动设备、VR、低端PC++和其他性能受限的硬件。虽然图形质量不如HDRP,但它的表现力足够支持绝大多数游戏和应用。

2. 视觉效果和渲染质量

  • HDRP :++支持更高级的光照和阴影处理,如物理上精确的光照模型、体积光照、环境遮蔽、屏幕空间反射(SSR)等,还支持更复杂的后处理效果(如全局光照、曲面细分)++。这些使得HDRP能够呈现出极其逼真的图形效果。
  • URP :则更加简化,虽然提供了基本的光照、阴影、后处理效果等,但在高质量细节上有所折中,比如++不支持全局光照、体积光和高级反射等效果++。URP更适合对性能要求较高、但不需要极致图形效果的项目。

3. 可扩展性和灵活性

  • HDRP:更加复杂,包含许多高级设置和功能,但这也意味着它的学习曲线较陡,需要更深入的技术知识。它允许更细致地控制各个渲染参数,以达到定制化需求。
  • URP:则设计得更加模块化和简洁,使用起来相对容易,并且其灵活性更高,适合广泛的开发需求。对于需要跨平台支持的项目,URP的渲染管线更轻量级、易于维护。

4. 开发复杂度

  • HDRP:因为支持的效果复杂,项目的开发和优化也会更复杂,特别是在光照、阴影、材质等方面可能需要更多的时间来调试和优化。
  • URP:相对更易于开发和优化,特别是对于中小型项目来说,URP的易用性和高效性让开发周期更短、调试更容易。

5. 未来发展

  • HDRP:主要专注于提供最前沿的视觉效果,因此适合那些需要展示尖端图形技术的项目。HDRP的更新会不断添加新的视觉特效和工具,适合追求极致画面表现的开发者。
  • URP:继续优化性能和扩展通用性,增强在跨平台项目中的表现。整体以简洁、高效为核心。

Channel Node

Swizzle

Swizzle 这个英语单词的本意是指一种混合或搅拌饮料的方式,尤其是鸡尾酒的搅拌,通常会用到一种叫 "swizzle stick" 的工具。不过,在编程和图形学领域,swizzle 用来表示"重排列"向量的分量。

Swizzle节点在游戏开发中非常实用,主要是为了方便处理特定场景下的计算需求、优化性能或实现特定的视觉效果。以下是一些常见使用场景:

1. 通道重映射和数据转换
  • 颜色操作 :在处理颜色时,颜色向量通常是float4(r, g, b, a)。有时你可能需要交换颜色通道,比如将红色通道的值映射到蓝色通道上,或调换颜色通道以实现特效(如"负片"效果、颜色转换等)。通过Swizzle,你可以方便地调整这些通道顺序,而不必分开处理每个通道。
  • 坐标变换 :对于UV坐标(纹理坐标),有时候需要对U和V(通常是float2(x, y))进行转换或交换,例如镜像翻转纹理、旋转UV坐标等。
2. 简化计算

在一些特效或几何计算中,你可能只关心某个向量的特定分量,而不是整个向量。例如:

  • 法线向量的Z轴分量 :在某些情况下,你只关心法线的Z分量(深度方向)来判断某个平面是否垂直于观察者。你可以使用Swizzle提取z分量并进行比较,而不需要处理整个法线向量。
  • 从3D提取2D :在3D图形中,有时候需要从3D向量(float3(x, y, z))中提取2D投影(float2(x, y)),进行2D层面上的计算或绘制。
3. 性能优化/简化代码逻辑
  • 减少不必要的计算:如果只需要某个向量的一部分,将不需要的分量去除可以减少不必要的计算。通过Swizzle,GPU只处理需要的分量,减少不必要的工作量,提升渲染效率。例如,如果你只需要颜色的RGB部分而不关心Alpha,你可以使用Swizzle只输出rgb,从而避免Alpha的处理。
  • 减少内存开销:重排向量分量可以避免创建新变量,避免了重复内存分配和拷贝操作。对于实时渲染来说,Swizzle的高效性有助于提升整体渲染性能。
  • 简化代码逻辑:Swizzle节点让操作更直观、简单,避免了分开处理向量分量的繁琐过程。比如,通过一个简单的Swizzle设置,你可以将一个float4的RGBA颜色快速变成一个float3的RGB颜色,或调换某些分量顺序,极大地减少了代码量和复杂性。
4. 视觉特效
  • 特殊材质效果 :很多视觉效果(如失真、噪波、纹理动态扭曲等)都涉及向量的分量操作。Swizzle可以用来创建动态效果,例如基于z分量创建高度变化的效果,或者根据某个分量对纹理进行偏移或扰动。
  • 法线映射 :在处理法线贴图时,法线向量通常是float3类型,表示模型表面在各个方向上的凹凸细节。有时需要反转某个轴的法线值,以改变光照效果,Swizzle可以方便地进行这样的变换(如z -> -z)。
举例:

假设你正在做一个水面波动的效果,需要让纹理坐标产生一定的变换来模拟波动。为了使这个波动自然、变化丰富,你可能需要根据一些数学公式调换UV坐标的U和V方向,甚至反转其中一个轴。这种操作可以通过Swizzle简单地实现,而不用重新书写繁琐的数学操作。

Unity中的Channel Node 对应到 Unreal Engine 中的节点:

Unreal Engine 的材质编辑器中,虽然没有直接叫做"Swizzle"的节点,但其功能通常可以通过ComponentMaskAppendVector 来实现split之类的功能

逆线性插值

逆线性插值(Inverse Linear Interpolation)是指已知线性插值的结果,反过来推导出原始输入值的过程。简单来说,通常线性插值是通过两个已知点来计算某个中间值,而逆线性插值则是通过已知的中间值来反推出输入值的位置。

Pseudo Random/True Random

在计算机图形学或游戏开发中,Pseudo Random Node (伪随机节点)通常指的是生成伪随机数的节点。这个术语在像 Unreal Engine 这样的引擎中经常出现,用来在蓝图或材质编辑器中创建伪随机的效果。

真正的随机数(true random numbers)通常是不可重复的,因为它们是基于自然的、不可预测的物理现象生成的。例如,通过硬件随机数生成器(HRNG),可以利用环境噪声、量子现象或其他随机物理过程生成真正的随机数。

伪随机数真正随机数的区别

  1. 伪随机数(Pseudo-Random Number, PRNG)

    • 可重复性 :伪随机数由算法生成,输入相同的种子(初始值)会产生相同的随机数序列。因此,它们是可重复的
    • 生成方式:通过确定性算法(如线性同余生成器、梅森旋转算法等)生成,这些算法在大多数情况下产生的数列看起来是随机的。
    • 应用场景:游戏、仿真、加密等,伪随机数提供了可控的"随机性",适用于需要重复性结果的场景。
  2. 真正的随机数(True Random Number, TRNG)

    • 不可重复性:真正的随机数来源于自然或物理现象,生成结果不可预测,且一般不可重复。
    • 生成方式:利用不可预测的物理现象,比如电子噪声、放射性衰变、量子效应等。
    • 应用场景:涉及高安全性需求的场景,如加密系统、彩票抽签、研究中的随机实验等,真正的随机数确保完全不可预测。

为什么伪随机数常用?

伪随机数因为可重复性和生成效率更高,且对于大多数应用来说已经足够"随机",因此在游戏开发、图形学和算法仿真中广泛应用。而真正的随机数因为生成速度较慢且不可控,通常只用于一些安全性要求特别高的领域。

总结:

  • 真正的随机数不是可重复的,它是基于自然现象,不可预测且每次都是独特的。
  • 伪随机数是通过算法生成的,可以重复,只要种子相同,结果也是相同的。

"Truncate " 的意思是截断缩短,通常指将某个东西的末尾部分去除,使其变得更短或限制在某个范围内

  1. 数学和计算机科学中的截断

    • 计算机编程数据处理 中,truncate 常用于表示对数字、字符串、数据结构等进行截断操作。例如,去除浮点数的小数部分,或限制字符串的长度。
    • 例如:truncate(3.14159) 会得到 3,因为去掉了小数部分。
    • -0.3 will floor to -1, but will truncate to zero.

对应fraction节点是output小数部分

三角学

Hyperbolic 是一个源自数学和几何学的术语,通常翻译为"双曲的 "或"夸张的",根据不同的语境有两种主要含义:

1. 数学中的双曲性(Hyperbolic Geometry) :数学中hyperbolic 主要与双曲几何和双曲函数相关

  • 数学和几何学 中,hyperbolic 是指与 双曲几何(Hyperbolic Geometry)相关的概念。这种几何学与欧几里得几何不同,适用于非平坦的空间。
  • 双曲几何中,平行线可以有无数条,且三角形的内角和小于 180°。
  • 双曲函数 :还有一些数学函数被称为双曲函数,比如 sinh (双曲正弦)cosh (双曲余弦)tanh (双曲正切) 等,这些函数与指数函数有关,并在某些数学和物理场景中应用广泛。
  1. 日常用语中的夸张(Exaggeration)
  • Hyperbolic 在日常语言中还可以用来描述某事物被夸大或夸张了。形容某些言辞、描述或行为过于极端,往往与事实不符。
  • 例如:"His story was so hyperbolic, no one believed him." (他的故事太夸张了,没人相信。)
  • 数学方面例句:"Hyperbolic geometry is useful for studying spaces with constant negative curvature."(双曲几何在研究恒定负曲率的空间时非常有用。)
  • 日常用语例句 : "The politician's speech was full of hyperbolic claims about his achievements."(那个政客的演讲充满了对自己成就的夸大描述。)

Posterize

Posterize(海报化或简化)在不同的上下文中有不同的含义,但通常与图像处理或艺术相关。以下是主要含义:

1. 图像处理

在图像编辑中,posterize 指的是将图像的颜色或灰度级数减少,从而创建一种平面、色块状的效果。这种处理可以使图像看起来更像一幅海报,减少细节和渐变,使得图像更具抽象感。

  • 应用:常用于艺术创作、平面设计以及特定的视觉效果,比如在 Photoshop 等图像编辑软件中使用海报化滤镜。

2. 艺术和设计

在艺术创作中,posterize 也可以用来描述一种风格,通常通过对颜色的简化和强烈对比来传达某种情感或视觉效果。这种风格常见于流行艺术、插画和图形设计中。

  1. 其他含义

在某些上下文中,posterize 也可以用作动词,指的是将某些复杂的东西简化为更容易理解的形式。比如在教学或沟通中,将复杂的概念以简单的方式表达出来。

例句:

  • "I decided to posterize the image to give it a more graphic, artistic look."(我决定对这张图片进行海报化处理,以使其看起来更具图形艺术感。)
  • "The artist used bold colors and shapes to posterize the landscape."(这位艺术家使用大胆的颜色和形状来简化风景。)

总结:

Posterize 是一个与图像处理、艺术和设计相关的术语,主要指通过减少颜色或细节来创建平面化的效果。

Procedual/ value noise& perlin noise

Simple noise generate a basic noise pattern type called 'value noise'

Gradient Noise generate 'perlin noise' which is slightly more sophisticated.

Logic node


is NaN: is not a number

相关推荐
向宇it2 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
_oP_i4 小时前
unity webgl部署到iis报错
unity
Go_Accepted4 小时前
Unity全局雾效
unity
向宇it4 小时前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
每日出拳老爷子7 小时前
【图形渲染】【Unity Shader】【Nvidia CG】有用的参考资料链接
unity·游戏引擎·图形渲染
北海65168 小时前
Dots 常用操作
unity
YY-nb15 小时前
Unity Apple Vision Pro 开发教程:物体识别跟踪
unity·游戏引擎·apple vision pro
Cool-浩15 小时前
Unity 开发Apple Vision Pro物体识别追踪ObjectTracking
unity·ar·apple vision pro·mr·物体识别·vision pro教程·objecttracking
向宇it1 天前
【从零开始入门unity游戏开发之——C#篇23】C#面向对象继承——`as`类型转化和`is`类型检查、向上转型和向下转型、里氏替换原则(LSP)
java·开发语言·unity·c#·游戏引擎·里氏替换原则
Cool-浩1 天前
Unity 开发Apple Vision Pro空间锚点应用Spatial Anchor
unity·游戏引擎·apple vision pro·空间锚点·spatial anchor·visionpro开发