Unity Shader URP:将法线可视化,便于调试

Unity光照Shader实战:从Blinn-Phong原理到URP自定义实现与优化 在实时图形渲染中,光照模型是决定物体视觉真实感的核心技术。其基本原理是通过数学模型模拟光线与物体表面的交互,经典模型如兰伯特漫反射和Blinn-Phong高光反射,构成了现代着色器的基础。理解这些原理对于实现材质质感、进行性能优化具有重要价值,尤其在移动端、VR/AR等性能敏感的场景中。本文聚焦于Unity引擎,深入探讨了在通用渲染管线(URP)下,如何从零编写一个自定义的Blinn-Phong光照Shader。内容涵盖Shader变体管理、移动平台精度优化等关键实战技巧,并对比了手写代码与使用Shader 阅读详情

法线可视化是一种非常实用的 Shader 调试手段:把看不见的方向向量转成颜色,就能快速判断模型法线、法线贴图、TBN 矩阵、空间转换和背面显示是否出了问题。

1. 为什么要看见法线?

在 Unity URP 中,很多光照问题看起来像“材质不对”“灯光不对”或者“阴影不对”,但根源常常是法线方向异常。比如模型导入后局部面发黑、法线贴图左右反了、切线空间没有正确传入,或者世界空间法线没有归一化。

法线本质上是一个方向向量,常见范围是 -1 到 1。屏幕颜色范围却是 0 到 1。因此最经典的可视化方式是:

float3 color = normal * 0.5 + 0.5;

这样 -1 会映射成 0,0 会映射成 0.5,1 会映射成 1。方向就变成了 RGB。

把法线的 XYZ 分量映射到 RGB,即可在屏幕上观察方向分布。

2. 最小 URP Shader:显示模型顶点法线

下面这个 Shader 使用 URP 的基础 HLSL include,把对象空间法线转到世界空间,然后输出为颜色。它适合检查模型导入后的法线方向是否正确。

Shader "Debug/URP_NormalVisualizer_World"
{
    SubShader
    {
        Tags
        {
            "RenderPipeline" = "UniversalPipeline"
            "RenderType" = "Opaque"
        }

        Pass
        {
            Name "Normal Debug"

            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag

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

            struct Attributes
            {
                float4 positionOS : POSITION;
                float3 normalOS   : NORMAL;
            };

            struct Varyings
            {
                float4 positionHCS : SV_POSITION;
                float3 normalWS    : TEXCOORD0;
            };

            Varyings vert(Attributes input)
            {
                Varyings output;
                output.positionHCS = TransformObjectToHClip(input.positionOS.xyz);
                output.normalWS = TransformObjectToWorldNormal(input.normalOS);
                return output;
            }

            half4 frag(Varyings input) : SV_Target
            {
                float3 n = normalize(input.normalWS);
                float3 color = n * 0.5 + 0.5;
                return half4(color, 1.0);
            }
            ENDHLSL
        }
    }
}

观察要点:正 X 方向更红,正 Y 方向更绿,正 Z 方向更蓝。颜色突变的位置往往对应硬边、法线断裂、UV seam 或模型本身的法线设置。

3. 世界空间、对象空间、切线空间看什么?

调试法线时,先要知道自己想检查哪一种空间。不同空间看到的问题不同。

对象空间法线

跟模型本地坐标相关。适合检查模型导入、镜像缩放、法线平滑组和硬边。

世界空间法线

跟场景方向相关。适合检查 Transform、非等比缩放、光照方向和最终参与光照的法线。

切线空间法线

跟法线贴图相关。适合检查 Normal Map 是否导入为法线类型、Y 通道是否翻转、TBN 是否正确。

同一个“法线”在不同空间里含义不同。调试前先明确输出的是哪一个空间。

4. 可视化法线贴图

如果要调试 Normal Map,重点不是顶点法线,而是采样贴图后得到的切线空间法线。URP 中可以用 UnpackNormal 解包法线贴图,再输出颜色。

Shader "Debug/URP_NormalMapVisualizer"
{
    Properties
    {
        [Normal] _BumpMap("Normal Map", 2D) = "bump" {}
        _BumpScale("Normal Scale", Range(0, 2)) = 1
    }

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

        Pass
        {
            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag

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

            TEXTURE2D(_BumpMap);
            SAMPLER(sampler_BumpMap);

            CBUFFER_START(UnityPerMaterial)
                float4 _BumpMap_ST;
                float _BumpScale;
            CBUFFER_END

            struct Attributes
            {
                float4 positionOS : POSITION;
                float2 uv         : TEXCOORD0;
            };

            struct Varyings
            {
                float4 positionHCS : SV_POSITION;
                float2 uv          : TEXCOORD0;
            };

            Varyings vert(Attributes input)
            {
                Varyings output;
                output.positionHCS = TransformObjectToHClip(input.positionOS.xyz);
                output.uv = TRANSFORM_TEX(input.uv, _BumpMap);
                return output;
            }

            half4 frag(Varyings input) : SV_Target
            {
                half4 packedNormal = SAMPLE_TEXTURE2D(_BumpMap, sampler_BumpMap, input.uv);
                half3 normalTS = UnpackNormalScale(packedNormal, _BumpScale);
                half3 color = normalTS * 0.5h + 0.5h;
                return half4(color, 1);
            }
            ENDHLSL
        }
    }
}

普通的平坦法线贴图通常偏蓝紫色;红绿变化代表表面在切线空间内向左右或上下倾斜。

5. 如果要看最终世界空间法线贴图

很多时候我们不只想看 Normal Map 本身,还想确认它通过 TBN 转换到世界空间后是否正确。这就需要传入切线、法线和副切线符号,构造切线空间到世界空间的矩阵。

struct Attributes
{
    float4 positionOS : POSITION;
    float3 normalOS   : NORMAL;
    float4 tangentOS  : TANGENT;
    float2 uv         : TEXCOORD0;
};

struct Varyings
{
    float4 positionHCS : SV_POSITION;
    float2 uv          : TEXCOORD0;
    float3 normalWS    : TEXCOORD1;
    float3 tangentWS   : TEXCOORD2;
    float3 bitangentWS : TEXCOORD3;
};

Varyings vert(Attributes input)
{
    Varyings output;
    output.positionHCS = TransformObjectToHClip(input.positionOS.xyz);
    output.uv = TRANSFORM_TEX(input.uv, _BumpMap);

    output.normalWS = TransformObjectToWorldNormal(input.normalOS);
    output.tangentWS = TransformObjectToWorldDir(input.tangentOS.xyz);

    float sign = input.tangentOS.w * GetOddNegativeScale();
    output.bitangentWS = cross(output.normalWS, output.tangentWS) * sign;
    return output;
}

half4 frag(Varyings input) : SV_Target
{
    half3 normalTS = UnpackNormalScale(
        SAMPLE_TEXTURE2D(_BumpMap, sampler_BumpMap, input.uv),
        _BumpScale
    );

    float3x3 tangentToWorld = float3x3(
        normalize(input.tangentWS),
        normalize(input.bitangentWS),
        normalize(input.normalWS)
    );

    float3 normalWS = normalize(mul(normalTS, tangentToWorld));
    return half4(normalWS * 0.5 + 0.5, 1);
}

这个版本可以暴露更隐蔽的问题:比如模型缺少 tangents、镜像 UV 导致副切线方向错误、非等比缩放后没有重新归一化,或者 Normal Map 的绿色通道方向不符合项目约定。

6. Shader Graph 做法

如果项目主要使用 Shader Graph,思路也一样:取 Normal Vector 节点,选择需要的空间,再做 * 0.5 + 0.5,最后接到 Base Color 或 Emission。

Shader Graph 中的核心链路就是 Normal Vector → Multiply 0.5 → Add 0.5 → 输出颜色。

7. 常见现象速查

看到的现象可能原因排查方向
某些面突然变成完全不同的颜色硬边、法线断裂、平滑组设置不同检查模型导入设置、法线模式、DCC 软件中的法线/平滑组
法线贴图看起来左右反了切线方向、UV 镜像或贴图通道约定不一致检查 tangent.w、副切线符号、Normal Map 导入类型
绿色方向上下颠倒DirectX/OpenGL 法线贴图 Y 通道约定不同尝试翻转 G 通道,或在导入/生成流程中统一规范
旋转模型后颜色变化不符合预期输出空间理解错了对象空间颜色随模型本地坐标,世界空间颜色随场景坐标
颜色发灰、不稳定或有奇怪条纹法线没有归一化、插值后长度变化、缺少 tangent在片元阶段使用 normalize,检查 mesh tangent 数据

8. 实战建议

  • 先看顶点法线,再看法线贴图,最后看经过 TBN 转换后的世界空间法线。
  • 调试 Shader 最好使用 Unlit 或直接输出颜色,避免光照、阴影和后处理干扰判断。
  • 输出前总是 normalize,尤其是从顶点传到片元后的法线。
  • 项目内统一 Normal Map 的 Y 通道约定,避免不同工具导出的贴图混用。
  • 遇到镜像 UV、负缩放、双面材质时,优先怀疑 tangent sign 和正反面法线处理。

一句话总结:法线可视化就是把方向翻译成颜色。只要明确“现在看的是什么空间”,URP 中的许多光照和法线贴图问题都会变得非常直观。

从Blender到Unity:可视化拆解PBR光照模型与BRDF实战 在计算机图形学中,基于物理的渲染(PBR)是实现真实感画面的核心技术,其核心数学描述是双向反射分布函数(BRDF)。BRDF通过微表面理论,将复杂的光照交互分解为法线分布、几何遮蔽和菲涅尔效应等可计算的函数。理解这些函数,不仅能提升渲染效果的真实性,更是优化实时渲染性能、开发高质量着色器的工程基础。本文通过独特的“可视化实验”路径,利用Blender作为微观几何的观察工具,直观展示微表面如何影响高光形状与阴影遮蔽;随后在Unity Shader Graph中,将观察到的物理现象逐一翻译为D、F、G等数学函数 阅读详情

相关推荐

Unity卡通渲染终极指南:从原理到实战的完整Shader实现

卡通渲染(Cel Shading/Toon Shading)是一种非真实感渲染技术,其核心在于将连续的光照计算结果进行离散化处理,形成鲜明的色块效果。这一技术通过改造传统的光照模型,使用渐变纹理或阶跃函数对漫反射强度进行重映射,从而实现从物理光照到风格化表现的转换。在工程实践中,卡通渲染的价值在于能够高效地营造独特的视觉风格,广泛应用于动漫风格游戏、影视动画及各类需要艺术化表现的交互内容中。其关键技术组件包括基于几何外壳或后处理的轮廓线生成、量化高光与风格化边缘光等。本文聚焦于Unity引擎中的卡通着色器实

weixin_33672109的博客 359

Unity 获取点的法线方向实现吸附效果

通过HTCVive手柄发射射线控制物体的吸附效果,类似于帖在墙壁上的画框。1.首先编写手柄上的控制类:SteamVRControllerBase。通过手柄射线获得碰撞点的位置和法线方向using UnityEngine; using System.Collections; public class SteamVRControllerBase : MonoBehaviour { publ...

YanisWu的博客 8966

Unity着色器从入门到精通:打通Shader Graph与HLSL的任督二脉

在计算机图形学中,着色器是决定3D物体最终屏幕呈现的核心程序,它定义了光线与物体表面交互的数学规则。其工作原理基于GPU的并行计算架构,通过顶点着色器和片元着色器两个主要阶段,分别处理几何变换与像素颜色计算。掌握着色器技术对于游戏开发、实时渲染等领域的性能优化与视觉表现至关重要,尤其在Unity引擎中,它直接关联到材质系统、渲染管线及各类特效的实现。无论是解决常见的材质显示异常(如TMP材质变紫),还是优化移动端发热问题,扎实的着色器知识都是进行深度调试和性能分析的基础。本教程旨在帮助开发者从原理层面理解着

weixin_29011239的博客 236

Unity URP遮挡高亮:从菲涅尔原理到RenderFeature实战

在实时渲染中,物体遮挡处理是提升视觉辨识度的关键技术。其核心原理基于深度测试与表面光学特性,通过比较场景深度信息判断可见性,并结合菲涅尔效应模拟边缘光晕。这项技术对于游戏开发、VR/AR应用以及交互式3D可视化至关重要,能有效解决复杂场景中的目标识别问题。在Unity URP管线中,开发者可以利用Shader Graph实现菲涅尔公式与深度检测的融合计算,再通过Scriptable Render Feature将效果高效集成到渲染流程。本文以菲涅尔公式和RenderFeature为核心,详细拆解了从底层原理

weixin_29011239的博客 229

Unity URP渲染调试利器:Material Override核心功能与实战应用

在实时渲染与游戏开发中,材质(Material)是决定物体视觉表现的核心资源,其属性如法线、金属度、平滑度的正确性直接影响最终画面效果与物理准确性。理解材质属性的底层原理,是进行高效渲染调试与性能优化的基础。通过可视化技术,开发者可以透视渲染管线中的中间数据,将抽象的数值映射为直观的颜色图像,从而快速定位问题根源。这一技术对于保障美术资源规范、优化实时性能具有重要价值,尤其在复杂光照场景与移动平台性能调优中作用显著。Unity URP渲染管线内置的Material Override功能,正是这一理念的工程实

weixin_29016315的博客 269

Unity卡通渲染核心:Toon Shader原理与URP实战指南

在计算机图形学中,着色器(Shader)是控制3D模型表面外观的核心程序,它定义了光线与材质交互的视觉表现。其基本原理是通过顶点和片元着色阶段,对模型的几何、纹理、光照信息进行数学计算与处理。在风格化渲染领域,非真实感渲染(NPR)技术旨在突破物理真实的限制,创造如手绘般的艺术效果,这构成了Toon Shader的技术基石。Toon Shader的核心技术价值在于,它通过程序化手段,将连续的光照计算结果进行离散化处理,例如使用阶跃函数或Ramp贴图来生成分明的色块阴影,从而模拟出2D动画的视觉特征。这种技术

weixin_30457465的博客 496

避坑指南:在Unity URP里用深度贴花,为什么你的图案总在漂浮或穿透?

本文详细解析了在Unity URP渲染管线中实现深度贴花效果时常见的图案漂浮与穿透问题,提供了7个关键解决方案。从深度计算精度陷阱到空间转换数学推导,再到深度测试方案和性能优化技巧,帮助开发者精准处理深度贴花技术中的各种挑战,提升视觉效果和渲染效率。

weixin_30698527的博客 354

Unity URP角色材质失效深度排障:从现象到Shader与管线优化

在实时图形渲染中,材质系统负责定义物体表面的视觉属性,其稳定性和性能直接影响应用表现。其核心原理在于Shader代码、渲染管线配置与网格数据三者间的精确匹配。一个健壮的材质系统能确保视觉一致性,并提升渲染效率,对于游戏开发、虚拟现实等需要高质量实时画面的应用场景至关重要。本文聚焦于Unity通用渲染管线(URP)中常见的角色材质失效问题,通过系统化诊断方法,深入剖析了**Shader变体**缺失、顶点数据不匹配等核心故障点,并借助**Frame Debugger**等工具进行GPU级调试,最终提供从排障到构

weixin_34209851的博客 355

URP曲面细分实战指南:从禁用到可控几何生成

曲面细分(Tessellation)是一种GPU端动态生成几何细节的核心渲染技术,其原理是通过Hull Shader与Domain Shader协同,在三角形补丁上依据细分因子实时插值并位移顶点。该技术显著提升表面几何精度,避免法线贴图的视觉欺骗局限,具备毫秒级响应与世界空间可控位移的技术价值。典型应用于医疗可视化、VR微结构模拟、高保真工业仿真等需真实几何起伏的场景。本文聚焦Unity URP管线——在默认不支持的前提下,系统解析硬件门槛、Renderer Feature注入、Shader Model 5

weixin_31179927的博客 174

COLMAP在Ubuntu下的编译陷阱与实战避坑指南——从环境配置到三维重建全流程

本文详细介绍了在Ubuntu系统下编译和配置COLMAP三维重建工具的全流程,包括环境准备、依赖库安装、CUDA加速配置以及常见编译问题的解决方案。通过实战案例演示了从图像特征提取到稠密重建的完整步骤,并提供了性能优化和问题排查的实用技巧,帮助用户高效完成三维重建任务。

weixin_29003437的博客 1048

从动态规划到最优控制:Hamilton-Jacobi-Bellman (HJB) 方程的核心思想与应用

本文深入解析了Hamilton-Jacobi-Bellman (HJB) 方程的核心思想与应用,从动态规划到最优控制的演变过程。通过实际案例展示了HJB方程在机器人路径规划、工业机械臂优化等领域的实践价值,并探讨了数值求解方法和深度学习结合的神经HJB前沿进展。

weixin_28700411的博客 458

Unity Shader入门指南:从ShaderLab到顶点片元着色器实战

在实时图形渲染中,着色器(Shader)是控制GPU渲染流程的核心程序,它决定了模型表面最终在屏幕上的像素颜色与外观。其工作原理基于可编程渲染管线,开发者通过编写顶点着色器和片元着色器,分别处理模型的顶点数据与光栅化后的片元,实现从3D坐标到2D像素的转换与着色。掌握着色器技术对于游戏开发与图形应用至关重要,它能突破内置材质的限制,实现高度定制化的视觉效果,如风格化渲染、复杂材质模拟和性能优化。本文以Unity引擎为实践环境,系统讲解ShaderLab语法框架、顶点/片元着色器的数据流转与编写方法,并通过纹

weixin_30325487的博客 771

SolidWorks有限元分析流程

对于很多专业,在进行设计完成后,为了缩短开发周期,往往需要配合仿真结果进行,机械行业更是如此。平时大家多采用专业有限元仿真软件进行仿真分析,如ANSYS;不过SolidWorks软件因为制图简单,同时存在专用的有限元仿真模块Simulation,对于初学者往往更加适用,下面简单介绍下SolidWorks Simulation仿真流程。 1. 分析流程 关键步骤如下: **(1)创建算例;**对模型的每次分析都是一个算例,一个模型可以包含多个算例。 **(2)应用材料;**指定模型的材料属性,如铝合金、钢材等

DYH_BK的博客 3万+

Unity Shader新手入门:4个月系统学习路线与实战指南

Shader(着色器)是运行在GPU上的程序,负责决定3D场景中每个像素的最终颜色与质感,是实时渲染的核心组件。其工作原理基于图形渲染管线,通过顶点着色器和片元着色器对几何数据进行坐标变换、光照计算与纹理采样。掌握Shader技术能极大提升游戏与应用的真实感与视觉表现力,广泛应用于游戏开发、影视特效、模拟仿真等领域。对于Unity开发者而言,系统学习Shader是进阶为技术美术或图形程序员的关键路径。本文基于【渲染管线】和【光照模型】等核心概念,规划了一条为期4个月的渐进式学习路线,涵盖从基础语法、数学工具

weixin_30460489的博客 326

ubuntu17.04 UHD 驱动出错

ubuntu 17.04 源码安装UHD

xrh003的博客 1万+

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8124

告别单调材质!Shader Graph制作动态场景:飘动的旗帜、积雪地面与流动水体(Unity 2019/2021通用)

本文详细介绍了如何使用Shader Graph在Unity中创建动态场景效果,包括飘动的旗帜、积雪地面和流动水体。通过节点连接方法和物理逻辑的深入解析,帮助开发者实现从基础到进阶的视觉效果,提升游戏场景的沉浸感。特别适用于Unity 2019/2021版本,涵盖特效制作的核心技巧与优化策略。

weixin_30568591的博客 198

海康Visionmaster-通讯管理:ModBus 通信发送非整型 数据的方法

海康Visionmaster-通讯管理:ModBus 通信发送非整型 数据的方法

视觉人机器视觉的博客 1742

Blender与Unity可视化对比:手动构建BRDF模型深入理解PBR渲染原理

在计算机图形学中,基于物理的渲染(PBR)是现代实时渲染的基石,其核心是双向反射分布函数(BRDF)。BRDF通过数学模型精确描述光线与物体表面的交互行为,确保渲染结果符合能量守恒定律,从而产生高度真实的视觉效果。其技术价值在于为材质表现提供了统一、可预测的物理基础,使艺术家和开发者能够基于真实世界的物理参数(如粗糙度、金属度)进行创作,大幅提升了跨平台、跨引擎的材质一致性。典型的应用场景涵盖游戏开发、影视特效、建筑可视化及数字孪生等领域,其中对微表面模型和着色器原理的深入理解是优化渲染效果和性能的关键。本

weixin_30629653的博客 323

黑猫带你学eMMC协议第17篇:超详细的eMMC HS200 & HS400讲解

1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 本文大约6000字,主要内容有: 1.什么是emmc hs200/hs400? 2.什么是tuning?tuning的过程又是什么? 3.如何设置才能让emmc进入hs200 mode? 4.如何设置才能让emmc进入hs400 mode? 5.emmc关于HS200/HS400内部结构框图对比。 6.部分个人相关经验总结。

黑猫奥利奥的博客 1万+

(ICLR 2025)【源码讲解+复现】TIMER-XL: Long-Context Transformers for Unified Time Series Forecasting

本文提出了一种统一的多变量时序预测模型Timer-XL,其核心创新包括:1)采用自回归解码器架构,将多变量时序预测统一为next-token预测问题;2)设计TimeAttention机制,通过相对位置编码和因果掩码捕获时序位置和变量间交互;3)支持长上下文预训练以提升零样本迁移能力。模型架构包含嵌入层、时间感知注意力块和预测头,采用MSE损失进行端到端训练。实验表明该方法在多种时序任务上表现优异,特别是在长跨度预测和少样本场景下。代码实现提供了完整的模型定义、数据加载和训练流程,支持自定义配置参数。

1146

Unity风格化水体着色器开发:从Shader Graph到性能优化的完整实践

在计算机图形学中,着色器是决定物体表面视觉外观的核心程序,它通过一系列数学计算和纹理采样,模拟光线与材质的交互。其工作原理基于GPU的并行渲染管线,在顶点和片段着色阶段分别处理几何变换与像素着色。这项技术的核心价值在于,它能够以可控的性能开销,实现从写实到风格化的丰富视觉效果,极大地提升了游戏和交互应用的视觉表现力与艺术自由度。在游戏开发、影视特效和模拟仿真等应用场景中,高效、美观的水体渲染一直是重要的技术挑战。本文聚焦于Unity引擎中的风格化水体着色器开发,深入探讨了如何利用Shader Graph可视

weixin_33971721的博客 286

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Unity Shader学习路线:零基础到独立写效果的8周指南

在游戏开发中,画面表现力往往取决于图形渲染的底层逻辑。渲染管线是GPU将模型数据转化为屏幕像素的完整流程,而Shader正是其中控制顶点与像素颜色计算的关键程序。理解Shader的工作原理,不仅能实现边缘光、溶解特效、动态水面等视觉反馈,还能针对移动端做性能优化。对于零基础开发者,从可视化Shader Graph建立直觉,再通过手写Unlit Shader掌握核心语法,是高效且扎实的入门路径。这套路线从渲染基础、数学知识到8周实操计划循序渐进,帮助初学者避开常见误区,逐步积累属于自己的效果库,最终具备独立实

weixin_34246826的博客 228

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Unity URP Rendering Debugger 实战技巧:Material Override 深度解析

本文深度解析Unity URP Rendering Debugger中的Material Override功能,这是一款强大的实时渲染调试工具。文章通过实战案例,详细讲解了如何利用该功能一键透视材质通道(如Albedo、Normal、Smoothness),快速定位渲染问题,并剖析了其底层实现原理与高级使用技巧,是提升URP项目调试效率的必备指南。

oo7890的博客 585

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【Unity URP】Rendering Debugger和可视化MipMap方案

URP下实现固定管线的Mipmap可视化效果思路及实现方案叙述。

qq_41835314的博客 4334

Unity URP卡通着色实战:从原理到Shader Graph实现

卡通渲染(Toon Shading)是一种通过离散化和风格化处理光照,模拟手绘或动漫视觉风格的非真实感渲染技术。其核心原理在于将连续的光照计算(如NdotL)通过色阶化(Ramp Shading)或阶梯函数进行量化,形成清晰的明暗色块与硬朗的明暗交界线,从而打破基于物理渲染(PBR)的连续光影过渡。这项技术在游戏开发中具有重要价值,能快速确立独特的美术风格,增强艺术表现力。其应用场景广泛,尤其在二次元、卡通风格或独立游戏中,用于角色、场景的风格化呈现。本文聚焦于在Unity通用渲染管线(URP)这一现代、高

weixin_33863087的博客 392
上一篇: Unity Shader URP 里法线到底要不要单位化/归一化?
下一篇: Unity Shader URP:法线如何进行光照计算
mxwin
博客等级 码龄19年 22粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值