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

news2024/12/23 17:21:02

目录

  Master Stack:

Vertex block:

Fragment block​编辑

Alpha Clip Threshold

Dither transparency

Graph Inspector

Texture 2d Array/Texture 3d

Virtual Texture

Sampler State

Keywords

Boolean keyword

右键显示所有节点

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

sample texture 2d

Virtual Texture 的基本概念:

Texel

Scene系列节点

矩阵节点 Input/Matrix Nodes

World space difference

Dielectric specular

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

1. 目标平台和性能

2. 视觉效果和渲染质量

3. 可扩展性和灵活性

4. 开发复杂度

5. 未来发展

Channel Node

Swizzle

1. 通道重映射和数据转换

2. 简化计算

3. 性能优化/简化代码逻辑

4. 视觉特效

举例:

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

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

为什么伪随机数常用?

总结

三角学

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

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

例句:

总结:

Posterize

1. 图像处理:

2. 艺术和设计:

3. 其他含义:

例句:

总结:

Procedual/ value noise& perlin noise

Logic node


Sample Virtual Texture Node | Shader Graph | 13.1.9icon-default.png?t=O83Ahttps://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 (双曲正切) 等,这些函数与指数函数有关,并在某些数学和物理场景中应用广泛。

2. 日常用语中的夸张(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 也可以用来描述一种风格,通常通过对颜色的简化和强烈对比来传达某种情感或视觉效果。这种风格常见于流行艺术、插画和图形设计中。

3. 其他含义

在某些上下文中,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[SpringBoot] 苍穹外卖--面试题总结--上

前言 1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解-CSDN博客 2--苍穹外卖-SpringBoot项目中员工管理 详解(一)-CSDN博客 3--苍穹外卖-SpringBoot项目中员工管理 详解(二)-CSDN博客 4--苍穹外码-SpringBoot项目中分类管理 详…

ThreeJS入门(091):THREE.PositionalAudio 知识详解,示例代码

作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas&#xf…

二叉树—相关结构

1.相关的结构问题(分治递归) 1.1节点个数 1.2叶子结点个数 叶子结点:没有孩子的节点 1.3树的高度(深度) 1.4二叉树第k层的节点个数 1.5二叉树查找值为x的节点 2.二叉树的创建和销毁 2.1二叉树的构建 二叉树遍历_牛客…

mysql语句执行过程

具体流程如下: 1】当客户端的SOL发送到MySQL时,首先是到达服务器层的连接器,连接器会对你此次发起的连接进行权限校验,以此来获取你这个账号拥有的权限。当你的账号或密码不正确时,会报用户错误。连接成功如果后续没有任何操作&am…

xlwings直接读取使用区域的数据

这里的读取方法,不用最大行号最大列号,直接使用used_range对应的方法 代码如下: import xlwings as xwfile_path r...\AAA.xlsx# 实例化app,打开文件 app_e xw.App(VisibleFalse,add_bookFalse) work_book appe.books.open(f…

New Phytologist | 中国科学院地理所:菌根共生途径塑造树木根经济空间

本文首发于“生态学者”微信公众号! 根经济空间是环境驱动下一系列根属性复杂互作的结果,本质上反映了植物地下碳(“货币”)投资与养分(“商品”)收益的多维策略权衡关系(图1)。然而…

【java】数据类型与变量以及操作符

各位看官:如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论,感谢您的支持!!! 目录 一.字面变量: 二:数据类型 1.1:int类型:&#xff0…

高速机器人的点动与直线运动

工业机器人中的点动和直线运动非常之重要,接下来说一下他们的实现过程。 点动: 点动包括两个部分,第一个点动是每一个关节电机的点动,第二个是机器末端向xyz的三个方向进行点动处理。 第一个点动是非常简单的,即把对…

IO系列-3 NIO基本概念:Buffer和Channel和Selector

1.缓冲区 1.1 Buffer类介绍 java在BIO中通常使用字节数组byte[]和字符数组char[]实现数据传输,在NIO中,引入了缓冲区Buffer进行数据传输,相对数组提供了更多的属性和API.Buffer在java.nio包中引入,Buffer对于常见的类型有对应的…

【C++指南】类和对象(二):类的默认成员函数——全面剖析 :构造函数

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 ​ 阅读本篇文章之前,你需要具备的前置知识:类和对象的基础 点击下方链接 【C指南…

Stable Diffusion的核心插件—ControlNet!万字长文解读!

前言 一、介绍 论文地址:[https://arxiv.org/abs/2302.05543](https://arxiv.org/abs/2302.05543 "https://arxiv.org/abs/2302.05543")代码地址:[GitHub - lllyasviel/ControlNet: Let us control diffusion models!](https://github.com/ll…

Python和C++胶体粒子三维残差算法模型和细化亚像素算法

🎯要点 使用信噪比、对比度噪声比和点扩展函数量化实验数据,增强共聚焦显微镜成像。参考粒子跟踪算法:使用二维和三维径向模型细化亚像素。胶体粒子三维图形分割学习模型模拟检测球形胶体。使用网格搜索优化模型和归一化处理以避免光漂白。 …

idear 控制台乱码、查询结果、参数、控制台乱码

一、 -Dfile.encodingUTF-8 二、 三、 四、 五、

【区间选点】

题目 代码 左端点排序区间合并 #include <bits/stdc.h> using namespace std; #define null -0x3f3f3f3f #define x first #define y second typedef pair<int, int> PII; const int N 1e510; vector<PII> v; int main() {int n;cin >> n;for(int i…

LLM大模型企业应用实战-“消灭”LLM幻觉的利器

大模型一定程度改变了我们生活工作的思考方式&#xff0c;越来越多的个人和企业在思考如何将大模型应用到更加实际的生产生活。 1 LLM的问题 1.1 幻觉 LLM因为是一个预训练模型&#xff0c;它已有一些知识储备&#xff0c;我们提的问题跟他的知识储备不相符时&#xff0c;会…

当管理遇上AI,工作效率翻了3倍!

最近这段时间&#xff0c;很多企业都开始降薪、裁员。 在降本增效的大背景下&#xff0c;企业但凡有什么大动作&#xff0c;压力往往都会转嫁到管理者的身上。 一方面&#xff0c;要调大家的状态&#xff0c;处理团队中的各种琐事&#xff1b;另一方面&#xff0c;要及时响应…

C++ : STL容器之string剖析

STL容器之string剖析 一、string 的迭代器&#xff08;一&#xff09;起始迭代器&#xff08;二&#xff09;末尾迭代器&#xff08;三&#xff09;反向迭代器 二、容量相关的函数&#xff08;一&#xff09;size&#xff08;二&#xff09;capacity&#xff08;三&#xff09;…

Unity3d使用JsonUtility.FromJson读取json文件

使用JsonUtility.FromJson方法不需要额外引用第三方库。该方法只能读取json对象&#xff0c;而不能读取json数组。 假如我们有如下的json数组&#xff1a; [ {"id":1, "name":"first2021", "level":5, "score":100, "…

cefsharp129.0.110(CEF 129.0.11,Chromium 129.0.6668.90)版本体验

一、依赖包 1.1 CefSharp.WinForms CefSharp.WinForms .NET Framework:net462 net462 is compatible. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 1.2 CefSharp.…

JAVA思维提升

利用java做一个双色球彩票系统 要求 package ZY; import java.util.Random; import java.util.Scanner; public class Test9双色球 { //目标&#xff1a;模拟双色球//规则投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择;蓝色球号码从1-16中选择。publi…