Unity Shader UV 坐标与纹理平铺Tiling & Offset 深度解析

Unity基础篇-UV坐标和法线 unity uv坐标和法线详解 阅读详情

从 UV 空间的数学本质出发,理解 URP 中纹理坐标的缩放(Tiling)与偏移(Offset)控制原理, 并掌握 Shader Graph、HLSL、C# 三种维度的实践技巧。

UV 坐标系基础

在实时渲染中,UV 坐标是将二维纹理贴图映射到三维网格表面的桥梁。 每个顶点都携带一组 (u, v) 值,顶点着色器将其传递给片段着色器,用于在纹理中查找颜色。 U 表示水平方向,V 表示垂直方向,两者共同构成一个 [0, 1] × [0, 1] 的归一化坐标空间。

Unity 的 UV 坐标系以左下角为原点 (0, 0),右上角为 (1, 1)。当 UV 值超出 [0, 1] 范围时, 纹理的采样行为取决于 Texture Wrap Mode 设置:

Wrap Mode行为描述典型用途
Repeat超出部分重复平铺,等价于 frac(uv)地板、墙壁、草地、岩石
Clamp边界像素被拉伸,不重复UI 元素、精灵图
Mirror镜像翻转重复,接缝处无缝对称纹理、无缝拼接
Mirror Once仅镜像一次,之后 Clamp特殊边界过渡效果

💡

Unity 支持最多 8 套 UV 通道(TEXCOORD0~TEXCOORD7)。 Lightmap 通常占用 TEXCOORD1,自定义效果层可使用 TEXCOORD2 及更高。

纹理平铺(Tiling)原理

Tiling(平铺/缩放)通过对 UV 坐标进行乘法缩放来实现纹理的重复。 其本质是将原本覆盖 [0,1]×[0,1] 的单一纹理"挤压",使更多重复单元出现在同一表面上。

数学定义

⚠️

Tiling 值为 0 时,所有片段都采样同一点(UV = 0),纹理退化为纯色块,通常是意外情况。 Tiling 值为负数时,纹理会被镜像翻转,这有时是有意为之的效果。

偏移(Offset)原理

Offset(偏移)通过对 UV 坐标进行加法平移来滑动纹理的起始位置。 Unity 规定 Offset 在 Tiling 变换之后叠加,完整公式如下:

Offset 最常见的运行时用途是 UV 动画——每帧将偏移值随时间累加,实现水流、火焰、云朵等流动效果,无需修改网格。

✅

配合 frac() 函数,Offset 可永远保持在 [0,1] 范围内循环, 避免长时间运行后浮点精度问题导致的 UV 抖动(UV Jitter)。

URP 管线中的 UV 流动

理解 UV 数据如何在 URP 渲染管线中流动,是正确控制 Tiling/Offset 的前提。

_MainTex_ST 向量布局

Unity 材质中每个纹理属性 _MainTex 都会自动关联一个 float4 _MainTex_ST(ST = Scale-Translation):

宏 TRANSFORM_TEX(uv, tex) 展开后等价于:uv.xy * tex_ST.xy + tex_ST.zw, 其中 .xy 是 Tiling,.zw 是 Offset。

⚠️

在 URP 中,_MainTex_ST 必须声明在 CBUFFER_START(UnityPerMaterial) 块中, 否则在 SRP Batcher 下会导致材质合批失效,严重影响性能。

HLSL 手写 Shader 实现

以下是完整的 URP Unlit Shader,展示如何正确声明、传递并应用 Tiling/Offset 参数。代码逐行出现,帮助你逐步理解每个环节。

Shader "Custom/URP_UV_TilingOffset"

{

    Properties

    {

        // 声明纹理,Unity 自动为其关联 _MainTex_ST

        _MainTex ("Main Texture", 2D) = "white" {}

        _Color   ("Tint Color",    Color) = (1,1,1,1)

    }

    SubShader

    {

        Tags { "RenderType"="Opaque" "RenderPipeline"="UniversalPipeline" }

        Pass

        {

            HLSLPROGRAM

            #pragma vertex   vert

            #pragma fragment frag

            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"


            // ── CBUFFER:SRP Batcher 合批必需 ──

            CBUFFER_START(UnityPerMaterial)

                float4 _MainTex_ST;  // .xy=Tiling .zw=Offset

                float4 _Color;

            CBUFFER_END


            // 纹理与采样器(URP 分离声明规范)

            TEXTURE2D(_MainTex);

            SAMPLER(sampler_MainTex);


            // ── 顶点输入 ──

            struct Attributes

            {

                float4 positionOS : POSITION;

                float2 uv         : TEXCOORD0;

            };


            // ── 顶点→片段插值 ──

            struct Varyings

            {

                float4 positionHCS : SV_POSITION;

                float2 uv          : TEXCOORD0;

            };


            // ── 顶点着色器 ──

            Varyings vert(Attributes IN)

            {

                Varyings OUT;

                OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);

                // 核心:应用 Tiling 和 Offset

                OUT.uv = TRANSFORM_TEX(IN.uv, _MainTex);

                return OUT;

            }


            // ── 片段着色器 ──

            half4 frag(Varyings IN) : SV_TARGET

            {

                half4 col = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, IN.uv);

                return col * _Color;

            }

            ENDHLSL

        }

    }

}

UV 动画:流动水面示例

在片段着色器中手动展开 TRANSFORM_TEX,可以叠加时间驱动的动态偏移:

// 在 CBUFFER 中添加流速参数

CBUFFER_START(UnityPerMaterial)

    float4 _MainTex_ST;

    float2 _FlowDir;      // 流动方向,e.g. (1,0)=向右

    float  _FlowSpeed;    // 流速

CBUFFER_END


// 顶点着色器中:只传递原始 UV,不做 TRANSFORM_TEX

Varyings vert(Attributes IN)

{

    Varyings OUT;

    OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);

    OUT.uv = IN.uv;  // 保留原始 UV,片段中再处理

    return OUT;

}


// 片段着色器中手动拆解

half4 frag(Varyings IN) : SV_TARGET

{

    // 1. 手动缩放(Tiling)

    float2 uv = IN.uv * _MainTex_ST.xy;


    // 2. 材质面板 Offset + 时间驱动动画

    float2 animOffset = _FlowDir * _FlowSpeed * _Time.y;

    uv += _MainTex_ST.zw + animOffset;


    // 3. frac() 防止长时间浮点漂移

    uv = frac(uv);


    return SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, uv);

}

Shader Graph 可视化实现

Unity Shader Graph 提供了 Tiling And Offset 节点,封装了完整的缩放与平移计算。

节点参数说明

Shader Graph 节点输入/输出说明
UV输出 UV (Vector2)读取网格的 UV 通道,默认 TEXCOORD0
Tiling And Offset → Tiling输入 Vector2横纵平铺倍数,默认 (1,1)
Tiling And Offset → Offset输入 Vector2横纵偏移量,默认 (0,0)
Tiling And Offset → Out输出 Vector2变换后的最终 UV,送入采样节点
Sample Texture 2D → UV输入 Vector2接收变换后的 UV

✅

在 Shader Graph 中,将 Tiling 和 Offset 的输入连接到 Vector2 Property(属性节点), 即可在材质 Inspector 面板中实时调整,或通过 C# 脚本动态控制。

C# 脚本动态控制

通过 C# 脚本在运行时修改材质的 Tiling 和 Offset,是实现 UV 动画、程序化效果的常用手段。

using UnityEngine;


public class TextureTilingControl : MonoBehaviour

{

    [Header("Tiling")]

    public Vector2 tiling = new Vector2(2f, 2f);

    [Header("Offset")]

    public Vector2 offset = Vector2.zero;


    private Material _mat;


    void Start()

    {

        // GetComponent 获取渲染器,取材质实例(避免修改共享材质)

        _mat = GetComponent<Renderer>().material;


        // 方法一:SetTextureScale / SetTextureOffset(推荐,语义清晰)

        _mat.SetTextureScale("_MainTex", tiling);

        _mat.SetTextureOffset("_MainTex", offset);

    }

}
using UnityEngine;


public class UVAnimator : MonoBehaviour

{

    public Vector2 flowDirection = new Vector2(1f, 0f);

    public float  flowSpeed    = 0.5f;


    private Material _mat;

    private Vector2  _offset;


    void Start()

    {

        _mat = GetComponent<Renderer>().material;

    }


    void Update()

    {

        // 每帧累加偏移

        _offset += flowDirection * flowSpeed * Time.deltaTime;


        // 使用 Repeat 将偏移限制在 [0, 1] 范围,防止浮点精度劣化

        _offset.x = Mathf.Repeat(_offset.x, 1f);

        _offset.y = Mathf.Repeat(_offset.y, 1f);


        _mat.SetTextureOffset("_MainTex", _offset);

    }

}

⚠️

使用 renderer.material 会自动创建材质实例,避免修改 sharedMaterial(会影响场景中所有使用该材质的对象)。 在频繁更新时,优先使用 MaterialPropertyBlock 以完全避免材质实例化,保持合批。

MaterialPropertyBlock(性能最优方案)

using UnityEngine;


public class UVAnimatorMPB : MonoBehaviour

{

    static readonly int MainTexST = Shader.PropertyToID("_MainTex_ST");


    public Vector2 tiling = Vector2.one;

    public float  speed  = 0.3f;


    Renderer             _renderer;

    MaterialPropertyBlock _mpb;


    void Awake()

    {

        _renderer = GetComponent<Renderer>();

        _mpb      = new MaterialPropertyBlock();

    }


    void Update()

    {

        float t = Time.time * speed;

        // _MainTex_ST: .xy = Tiling, .zw = Offset

        var st = new Vector4(tiling.x, tiling.y, t, 0f);

        _mpb.SetVector(MainTexST, st);

        _renderer.SetPropertyBlock(_mpb);

    }

}

常见场景与最佳实践

性能与最佳实践总结

场景推荐方案注意事项
静态纹理缩放材质 Inspector 面板直接设置无运行时开销,推荐首选
一次性运行时设置mat.SetTextureScale/Offset会创建材质实例,注意内存
每帧更新(动画)MaterialPropertyBlock不破坏 GPU 合批,性能最优
Shader 内动画片段着色器 _Time.y 驱动无 CPU 开销,避免 UV Jitter
Shader Graph 项目Tiling And Offset 节点 + Property连接 Vector2 属性节点可调试
unity设置材质偏移量 unity设置材质偏移量。材质偏移量(Material Offset)是一种在游戏开发中常用的技术,它通常用于实现一些特殊效果,比如纹理滚动、水面流动等。材质偏移量是指通过改变材质的UV坐标来实现纹理滚动等效果的方法。在Unity中,每个材质都有一个UV坐标,它用于定位纹理图像中的像素。通过改变材质的UV坐标,可以改变纹理的显示位置,从而实现纹理滚动的效果。具体来说,材质偏移量是指通过改变材质的UV坐标,使纹理像素的显示位置发生偏移,从而实现纹理滚动的效果。 阅读详情

相关推荐

Unity中Shader序列图动画(UV流动的通用起始点)

我们在Shader中实现序列帧动画。可以实现一些简单特效或动画节省性能用。我们在这篇文章中,实现一下UV流动的通用起始点。

楠溪泽岸的博客 3206

【第008问 Unity中什么是UV?】

Unity中对UV的理解 一、什么是UV UV是什么?UV其实就纹理坐标轴的另外一种定义; 比如平时我们说的Transform的坐标,就是说该Transform在笛卡尔坐标系中的具体位置,描述该位置的形象表示用(x,y,z);所以平时我们说到物体的坐标的时候,潜意识就会想到(x,y,z); 为什么纹理也会有坐标呢? 比如下面这张图片: 从这张图片我们可以通过查看它的信息,知道这张图片的大小是多少,尺寸是多少,什么时候创建的,但是我们并不会去关心这张图片的坐标,因为这个时候我们并不会用上它的坐标,但是它却是

平台不倒,记录不息 7316

Unity Shader纹理动画:Tilling与Offset原理与实战应用

在实时渲染与游戏开发中,纹理动画是实现动态视觉效果的核心技术之一。其基本原理是通过在Shader中动态修改纹理坐标(UV),驱动纹理采样位置的变化,从而在GPU层面高效生成动画。这项技术的核心价值在于能以极低的性能开销,实现诸如水面流动、火焰燃烧、能量护盾等丰富的动态效果,是优化项目性能、减少对CPU端粒子系统依赖的关键手段。在Unity引擎中,纹理坐标的变换主要依赖Tilling(平铺)和Offset(偏移)两个基础属性:Tilling通过对UV进行乘法缩放控制纹理密度与重复,Offset则通过加法平移实

优快云头条 459

【图形学】你好,uv变换(新手入门向聊天教程)

以贴图的(0.3,0.6)为原点进行缩放,怎么实现?

m0_55476160的博客 7915

Unity动态纹理实战:Tilling与Offset实现消融流动效果

在计算机图形学中,纹理映射是实时渲染的基础技术之一,它通过UV坐标系将2D图像映射到3D模型表面。其核心原理是通过对UV坐标进行数学变换来控制纹理的显示方式,其中Tilling(平铺)和Offset(偏移)是最基础的变换操作。Tilling通过乘法操作控制纹理的重复密度,Offset通过加法操作实现纹理的位置平移。这两项技术的工程价值在于能以极低的计算开销实现丰富的动态视觉效果,是Shader编程中性价比最高的优化手段之一。在游戏开发、影视特效和交互式媒体等应用场景中,动态纹理技术被广泛用于实现滚动背景、水

361

Unity Shader实现管道流体动态效果:UV动画与纹理混合技术详解

在实时图形渲染中,Shader是实现复杂视觉效果的核心技术之一,它通过在GPU端对每个像素进行编程控制,能够高效生成动态、逼真的图像。其基本原理是利用纹理坐标(UV)和时间变量驱动纹理采样与混合,从而模拟出各种自然现象和动态效果。这种技术具有极高的性能优势和艺术可控性,是技术美术和图形程序员的必备技能。在工业可视化、游戏开发、科幻场景构建等领域,Shader常被用于模拟流体流动、能量传输等效果。本文聚焦于利用顶点片段着色器,通过多层噪声纹理的UV偏移与混合,在管道模型表面实现流体动态模拟,其中涉及无缝UV处

weixin_33701617的博客 422

UV坐标与Tiling & Offset:Unity Shader纹理平铺深度解析

在3D渲染中,UV坐标是纹理映射的基石,它定义了模型表面与纹理图片之间的对应关系。而Tiling与Offset则是围绕UV坐标最常见的两种变换,分别控制纹理的重复次数与偏移位置。理解它们的底层数学原理——先缩放后平移,能帮助开发者精准操控纹理采样,避免出现拉伸、错位等渲染问题。在Unity Shader开发中,这两个参数不仅用于简单贴图,还广泛应用于地表纹理混合、流动水面UV动画、纹理图集序列帧以及三平面映射等高级效果。掌握Tiling & Offset的运算逻辑与工程调试技巧,是提升材质表现力和渲染性能的

weixin_29011993的博客 184

Shader纹理映射核心原理:从UV坐标到采样优化,打造真实感渲染基石

纹理映射是计算机图形学中实现真实感渲染的核心技术,它解决了二维图像与三维模型表面精确关联的问题。其基本原理是通过UV坐标系统,将模型顶点映射到纹理图像上,再经由纹理采样和过滤技术,将离散的纹素转换为连续的颜色信息。这项技术的价值在于,它能够在不增加模型几何复杂度的前提下,极大地丰富表面细节,提升视觉真实感。在游戏开发、影视特效、三维可视化等应用场景中,纹理映射是构建材质系统的基础。本文深入探讨了纹理坐标、采样过滤、寻址模式等关键概念,并解析了在Shader中实现纹理映射的具体步骤,涵盖了法线贴图、金属度贴图

weixin_34234721的博客 327

Unity纹理系统全解析:从基础概念到Shader实战优化

纹理是计算机图形学中用于存储和查询多维数据的核心机制,其本质是通过预计算的离散图像来高效还原连续表面细节,实现了“以存储换计算”的优化范式。在实时渲染管线中,纹理作为关键的数据结构,不仅承载颜色信息,还可编码法线、高度、材质属性等多种数据,通过UV坐标与硬件采样机制,显著提升了渲染效率与视觉丰富度。对于游戏开发与图形应用,深入理解纹理导入设置、色彩空间管理、压缩格式及采样原理,是解决渲染瑕疵、优化显存与带宽的基础。本文聚焦Unity引擎中的纹理工作流,详解从美术资源到Shader采样的完整管线,并针对法线贴

weixin_33754065的博客 442

Unity手绘熔岩纹理包应用指南:从材质配置到地形绘制的全流程实践

在游戏开发与计算机图形学中,纹理贴图是构建虚拟世界视觉表现的核心基础技术之一,它通过将二维图像映射到三维模型表面,赋予物体丰富的色彩、质感与细节。其原理在于利用UV坐标将纹理像素与模型顶点精确对应,通过着色器进行采样与混合计算。这项技术的价值在于能以极低的几何成本实现高度的视觉真实感与艺术表现力,是平衡性能与画质的关键。在游戏开发、影视特效、数字孪生等应用场景中,高质量的纹理资源能极大提升内容制作效率与视觉一致性。本文聚焦于风格化游戏开发领域,深入探讨如何将一套精心制作的**手绘风格熔岩纹理包**与**Un

技术百科 711

Unity Shader Graph官方节点案例深度解析:从原理到实战应用

在实时渲染领域,着色器是实现复杂视觉效果的核心技术,它通过一系列数学运算和图形学函数控制像素的最终呈现。其基本原理是将模型、纹理、光照等信息在GPU上进行并行处理,生成屏幕上的每一个像素。这项技术的核心价值在于,它能够以极高的效率实现从基础材质到高级特效的各类渲染需求,广泛应用于游戏开发、影视特效、模拟仿真和交互式媒体等场景。对于使用Unity引擎的开发者而言,Shader Graph作为一款可视化着色器编辑工具,极大地降低了着色器编程的门槛。通过节点化的操作,开发者可以直观地组合各种图形学功能模块,如数学

chouzu8463的博客 450

Unity Shader入门:从核心概念到实战编写第一个着色器

着色器(Shader)是计算机图形学中控制三维模型表面视觉呈现的核心程序,运行于GPU,负责计算每个像素的最终颜色、光照和纹理效果。其工作原理基于可编程渲染管线,通过顶点着色器进行坐标空间变换,片元着色器处理像素级着色,实现对物体外观的精细控制。掌握Shader技术对于游戏开发、实时渲染和视觉特效领域具有重要价值,能够实现从基础材质到复杂风格化渲染的各类效果。本文以Unity引擎为实践环境,系统讲解Shader、材质与着色器资产的关系,剖析ShaderLab语法结构,并通过编写一个完整的“纯色Unlit”着

weixin_33801856的博客 578

Unity中实现视察3D效果:深度图与视差映射的Shader实战

视差映射(Parallax Mapping)是计算机图形学中模拟三维深度感的经典技术,其核心原理是利用观察者视角移动时,不同深度图层产生位移差来营造立体视觉。这项技术通过深度图(Depth Map)存储像素的深度信息,结合顶点/片元着色器进行实时计算,在渲染管线中高效实现伪3D效果。其技术价值在于以较低的性能开销显著提升视觉沉浸感,尤其适用于游戏开发、UI设计和动态展示领域。在Unity引擎中,通过编写自定义Shader,将深度图的灰度值转换为顶点偏移量,并基于摄像机视角动态调整UV采样坐标,即可让2D图像

weixin_34218890的博客 433

Unity渐变纹理Shader:从原理到实战,打造高级UI与特效视觉

在计算机图形学中,纹理采样是渲染管线的核心环节,它通过UV坐标从纹理贴图中获取颜色或数据信息。基于这一原理,渐变纹理作为一种特殊的数据纹理,能够存储从0到1的连续过渡信息,在片元着色器中作为查找表使用。这种技术将抽象的过渡感转化为可编程的视觉资产,其技术价值在于能够高效实现颜色、透明度、亮度等属性的平滑插值,避免了硬编码带来的视觉生硬感。在工程实践中,渐变纹理Shader广泛应用于游戏UI、粒子特效、材质渲染等场景,通过调制与混合操作,能够轻松实现进度条光晕、按钮交互反馈、特效边缘柔化等高级视觉效果。本文以

weixin_30509393的博客 363

Unity Height Map视差偏移映射:从原理到Shader Graph实现

在实时渲染中,法线贴图是增强表面细节的基础技术,它通过改变像素法线方向模拟光照凹凸感。然而,法线贴图无法产生视差效果,即观察角度变化时表面细节不发生位移。视差偏移映射技术则通过高度图提供的深度信息,动态扭曲纹理采样坐标,在视觉上模拟表面凹凸带来的视差效应。这项技术的核心价值在于以极低的性能开销,为静态或中远景物体增加几何深度感,相比真正增加几何的曲面细分或复杂的光线步进追踪,它更适合移动端、VR及需要大量实例化的场景。在Unity Standard Shader中,Height Map参数正是这一技术的实现

weixin_30455023的博客 394

《物联网技术》课程笔记——第二章 物联网技术架构

文章目录第二章:物联网技术架构1 物联网技术体系(C3SD)2 系统体系结构的基本概念3 物联网体系结构——信息传递视角3.1物联网感知层3.1.1 感知层要解决的问题3.1.2 感知层的形态3.1.3 节点的感知能力与控制能力3.1.4 感知层实例3.2 物联网网络层3.2.1 网络相关概念3.2.2 IPV6与IPV4相比互联网协议的升级3.2.3 计算机网络的逻辑层次3.2.4 传输网的拓扑结构3.2.4.1 举例:智能小区的三表采集系统3.2.4.2 接入层3.2.4.2 汇聚层3.2.4.2 核心

南京大学软件工程硕士在读 2503

Unity Shader开发指南:Surface、V&F与Shader Graph核心解析

在计算机图形学中,着色器(Shader)是控制渲染管线中顶点和像素处理的核心程序,其原理在于通过GPU并行计算,将3D模型的几何与材质信息转换为屏幕上的2D图像。这项技术是实现游戏画面、影视特效和实时可视化等数字内容的关键。对于Unity开发者而言,掌握不同的Shader编写方式能极大提升渲染效果开发效率与灵活性。表面着色器(Surface Shader)作为Unity封装的高级抽象层,通过声明式编程快速实现基于物理的光照模型,适合标准材质开发;顶点片元着色器(Vertex & Fragment Shade

weixin_30385925的博客 416

基于Transformers库的BERT模型:一个文本情感分类的实例解析

简介 本文来讲述BERT应用的一个例子,采用预训练好的BERT模型来进行演示。BERT的库来源于Transformers,这是一个由PyTorch编写的库,其集成了多个NLP领域SOTA的模型,比如bert、gpt-2、transformer xl等,并且可以自由选择已经预训练好的模型参数,我们可以基于这些参数进行进一步的训练调试。 Part 1: 利用BERT基于特征的方式进行建模 1、任务与数...

蓝天白云梦的csdn博客 2万+

Unity三平面映射(TriPlanar)技术详解:告别UV接缝,实现无缝纹理渲染

在计算机图形学中,纹理映射是赋予3D模型表面细节的核心技术。传统UV映射依赖模型表面的2D坐标展开,但在复杂曲面或程序化生成内容中,UV接缝问题难以避免,导致纹理断裂、视觉不连贯。三平面映射(TriPlanar Mapping)技术从原理层面创新,通过世界空间或物体空间坐标,从X、Y、Z三个轴向分别投影纹理,再根据表面法线进行平滑混合,从根本上消除了接缝。这项技术的工程价值在于,它不依赖预计算的UV坐标,特别适用于地形系统、体素世界、程序化生成内容等场景,能显著提升视觉整体性和开发效率。在Unity引擎中实

weixin_30617797的博客 316

论文Agile Autonomy: Learning High-Speed Flight in the Wild开源代码运行记录

​ Agile Autonomy: Learning High-Speed Flight in the Wild Learning High-Speed Flight in the Wild 论文链接:https://www.science.org/doi/10.1126/scirobotics.abg5810 代码:https://github.com/uzh-rpg/agile_autonomy 国内复现:https://github.com/Howardcl/AgileAutonomyPX4

Hanamizukimr的博客 1488

基于BFQ19S的共射振荡器设计(克拉泼电容三点式)

根据理论,设计出如下LC振荡器: 一、设计初期是使用= 400Mhz作为目标值计算的, 但由于计算值与实际值有差别,所以使用计算值附近的元器件代替使用;最终该电路的L1=82nH , D1 = 5.6pF, C11=18pF, C12 = 18pF ; 另外R3= 600Ω, R4取27k , C9取10pF; 该电路实际的震荡频率为主要为L1,D1 决定,所以其震荡频率约为 == 235Mhz; 二、由于实际得到的频率比目标频率低太多,所以调整电路使其能达到400M左...

rzchong1988的专栏 3705

【节点】[Bricks节点]原理解析与实际应用

摘要:Unity URP ShaderGraph中的Bricks节点是一个程序化纹理生成工具,可动态创建砖块图案。它通过参数控制砖块密度、尺寸、接缝宽度和颜色变化,无需依赖外部纹理资源。该节点提供Shelf和Luminance两种输出模式,分别支持砖块/接缝独立处理与整体明暗控制,适用于从写实建筑材质到风格化效果的各种应用场景,能有效减少纹理内存占用并提高工作效率。(149字)

设计 AI 玩游戏🎮 1396

M2DGR数据集在主流SLAM框架中的实战配置指南:从ORB-SLAM到FAST-LIO的完整流程

本文提供了M2DGR多传感器数据集在主流SLAM框架中的实战配置指南。详细介绍了从ORB-SLAM、VINS-Mono等视觉/视觉惯性框架,到A-LOAM、FAST-LIO等激光/激光惯性框架的完整配置流程、参数调整要点及常见问题解决方案。通过实际测试对比,分析了各算法在M2DGR数据集上的表现,为机器人定位与建图研究提供了宝贵的实战经验。

k9l0m1的博客 481
上一篇: Unity Shader 逐像素光照 vs 逐顶点光照性能与画质的权衡策略
下一篇: Unity URP 下纹理采样器状态:Wrap Mode(Repeat / Clamp)与 Filter Mode(Point / Bilinear / Trilinear)
mxwin
博客等级 码龄19年 22粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值