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

目录

  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.mzph.cn/news/881240.shtml

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

相关文章

初入网络学习第一篇

引言 不磨磨唧唧,跟着学就好了,这个是我个人整理的学习内容梳理,学完百分百有收获。 1、使用的网络平台:eNSP 下载方法以及内容参考这篇文章 华为 eNSP 模拟器安装教程(内含下载地址)_ensp下载-CSDN博客https://b…

DBMS-3.4 SQL(4)——存储过程和函数触发器

本文章的素材与知识来自李国良老师和王珊老师。 存储过程和函数 一.存储过程 1.语法 2.示例 (1) 使用DELIMITER更换终止符后用于编写存储过程语句后,在下次执行SQL语句时记得再使用DELIMITER将终止符再换回分号。 使用DELIMITER更换终止符…

数据分布过于集中 怎么办,python 人工智能 ,数据分析,机器学习pytorch tensorflow ,

数据分布过于集中,意味着数据的大部分值都聚集在某个特定区间内,这可能会导致统计分析的结果不够稳健,或者模型训练时出现过拟合等问题。针对这种情况,可以考虑以下几种方法来处理: 变换成 1. **数据转换**&#xff1…

MySQL多表查询:列子查询

先看我的表数据 dept表 emp表 列子查询,也就是多列作为子查询去寻找一些问题 常用操作符:IN, NOT IN, ANY, SOME, ALL 1.查询 "销售部" 和 "市场部" 的所有员工的信息(拆分成以下两个问题) a. 查询"销…

基于STM32的数字温度传感器设计与实现

引言 STM32 是由意法半导体(STMicroelectronics)开发的基于 ARM Cortex-M 内核的微控制器系列,以其强大的处理能力、丰富的外设接口和低功耗著称,广泛应用于嵌入式系统设计中。在这篇文章中,我们将介绍如何基于 STM32…

如何用python抓取豆瓣电影TOP250

1.如何获取网站信息? (1)调用requests库、bs4库 #检查库是否下载好的方法:打开终端界面(terminal)输入pip install bs4, 如果返回的信息里有Successfully installed bs4 说明安装成功(request…

OJ在线评测系统 微服务 OpenFeign调整后端下 nacos注册中心配置 不给前端调用的代码 全局引入负载均衡器

OpenFeign内部调用二 4.修改各业务服务的调用代码为feignClient 开启nacos注册 把Client变成bean 该服务仅内部调用,不是给前端的 将某个服务标记为“内部调用”的目的主要有以下几个方面: 安全性: 内部API通常不对外部用户公开,这样可以防止…

Linux操作系统——概念扫盲I

目录 虚拟机概念刨析 在那之前,询问什么是虚拟化? 现在来看看什么是虚拟机 虚拟机有啥好的 小差:那JVM也叫Java Virtual Machine,有啥区别呢? Reference 虚拟机概念刨析 我们下面来简单聊聊虚拟机这个概念。对于…

嵌入式硬件设计

嵌入式硬件设计是指针对嵌入式系统(一种专用的计算机系统,通常嵌入到其他设备中)进行的硬件设计工作。嵌入式系统广泛应用于消费电子、工业控制、医疗设备、汽车电子、航空航天等领域。以下是嵌入式硬件设计的主要内容和步骤: 1.…

浏览器前端向后端提供服务

WEB后端向浏览器前端提供服务是最常见的场景,前端向后端的接口发起GET或者POST请求,后端收到请求后执行服务器端任务进行处理,完成后向前端发送响应。 那浏览器前端向后端提供服务是什么鬼? 说来话长,长话短说。我在人…

微信步数C++

题目: 样例解释: 【样例 #1 解释】 从 (1,1) 出发将走 2 步,从 (1,2) 出发将走 4 步,从 (1,3) 出发将走 4 步。 从 (2,1) 出发将走 2 步,从 (2,2) 出发将走 3 步,从 (2,3) 出发将走 3 步。 从 (3,1) 出发将…

图论day55|深度优先搜索理论基础、98. 所有可达路径(卡码网)

图论day55|深度优先搜索理论基础、98. 所有可达路径(卡码网) 思维导图汇总深度优先搜索理论基础98.所有可达路径(卡码网)1.邻接矩阵法2.邻接表法 思维导图汇总 深度优先搜索理论基础 深度优先搜索(dfs)与广度优先搜索(bfs&#xf…

QSerialPort 串口通信示例

之前使用过MFC写过串口通信的示例,今年学了Qt,特意使用Qt写了串口通信的示例,发现比MFC要容易一些, MFC串口示例如下: Qt示例如下: Qt这个做的很简单,主要还是想验证一下api, 核心…

Python中对象obj类型确定最pythonic的方式——isinstance()函数

python中确定对象obj的类型,isinstance函数最是优雅,type、issubclass等函数也可以,但终究“曲折”。 (笔记模板由python脚本于2024年10月07日 19:42:38创建,本篇笔记适合喜欢python的coder翻阅) 【学习的细节是欢悦的历程】 Pyth…

算法专题四: 前缀和

目录 1. 前缀和2. 二维前缀和3. 寻找数组的中心下标4. 除自身以外数组的乘积5. 和为k的子数组6. 和可被K整除的子数组7. 连续数组8. 矩阵区域和 博客主页:酷酷学!!! 感谢关注~ 1. 前缀和 算法思路: 根据题意, 创建一个前缀和数组, dp[i] dp[i -1] arr[i], 再使用前缀和数组,…

排查和解决JVM OOM实战

JVM OOM介绍 Java内存区域布局 下面的分析中都是基于JDK 8开始的。关于JMM不过多介绍每个区域的作用。OOM不单只会发生在堆内存,也可能是因为元空间或直接内存泄漏导致OOM,此时在OOM的详细信息中会有不同体现。 Java OOM的类别 java.lang.OutOfMemory…

王者农药更新版

一、启动文件配置 二、GPIO使用 2.1基本步骤 1.配置GPIO,所以RCC开启APB2时钟 2.GPIO初始化(结构体) 3.给GPIO引脚设置高/低电平(WriteBit) 2.2Led循环点亮(GPIO输出) 1.RCC开启APB2时钟。…

HarmonyOS/OpenHarmony 自定义弹窗页面级层级控制解决方案

关键词:CuntomDialog自定义弹窗、SubWindow子窗口、页面级、弹窗层级控制、鸿蒙、弹窗展示层级异常 问题存在API版本:API10 - API12(该问题已反馈,期望后续官方能增加页面级控制能力) 在正常的鸿蒙app开发过程中&…

TIM(Timer)定时器的原理

一、介绍 硬件定时器的工作原理基于时钟信号源提供稳定的时钟信号作为计时器的基准。计数器从预设值开始计数,每当时钟信号到达时计数器递增。当计数器达到预设值时,定时器会触发一个中断信号通知中断控制器处理相应的中断服务程序。在中断服务程序中&a…

LeetCode讲解篇之239. 滑动窗口最大值

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们维护一个长度为k的窗口,然后窗口从数组最左边一直移动到最右边,记录过程中窗口中的最大值,就是答案 我们每次查询长度为k的窗口最大值是什么时间复杂度是O(k)的&#xff0…