【Unity Shader实战】卡通风格的Shader(一)

[每天一个Unity Shader] 01.卡通风格水波 / 冲击波效果 介绍用Unity ShaderLab实现水波效果 阅读详情
AI摘要

本文介绍如何在Unity中使用Surface Shader实现卡通效果,包括简化颜色、卡通光照和描边效果。通过调整Tooniness属性来简化颜色,利用渐变贴图模拟卡通光照,并通过边缘光照实现描边,同时探讨了这种方法的弊端和改进思路。


写在前面


本系列其他文章:


呜,其实很早就看到了这类Shader,实现方法很多,效果也有些许不一样。从这篇开始,陆续学习一下接触到的卡通类型Shader的编写。


本篇的最后效果如下(只有怪物和苹果部分):



本篇文章里指的卡通效果具有如下特点:

  • 简化了模型中使用的颜色 
  • 简化光照,使模型具有明确的明暗区域 
  • 在模型边缘部分绘制轮廓(也就是描边)


我们再来回顾一下Unity Surface Shader的pipeline。(来源:Unity Gems)



由上图可以看出,我们一共有4个可修改渲染结果的机会(绿色方框中的代码)。在理解这个的基础上,我们来真正学习如何实现上述效果。


简化颜色


在第一步中,我们只实现一个最常见的Bump Diffuse Shader,在这个基础上添加一点其他的技巧来实现简化颜色的目的。Unity的内置Shader也包含了Bump Diffuse Shader,它的作用很简单,就是用一张贴图(也叫法线贴图)记录了模型上的凹凸情况,以此来作为顶点的法线信息,渲染出来的模型也就有了凹凸不平的感觉(详情可见Unity官网)。


基本的Bump Diffuse Shader代码如下:

Shader "Example/Diffuse Bump" {
    Properties {
      _MainTex ("Texture", 2D) = "white" {}
      _BumpMap ("Bumpmap", 2D) = "bump" {}
    }
    SubShader {
      Tags { "RenderType" = "Opaque" }
      CGPROGRAM
      #pragma surface surf Lambert
      struct Input {
        float2 uv_MainTex;
        float2 uv_BumpMap;
      };
      sampler2D _MainTex;
      sampler2D _BumpMap;
      void surf (Input IN, inout SurfaceOutput o) {
        o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
        o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
      }
      ENDCG
    } 
    Fallback "Diffuse"
  }


效果如下:




接下来,我们进行以下步骤:

  1. 在Properties块中添加如下新的属性:
    _Tooniness ("Tooniness", Range(0.1,20)) = 4

  2. 在SubShader块中添加对应的引用:
    float _Tooniness;

  3. 给
UnityShader : NPR卡通渲染基础 UnityShader之NPR卡通渲染基础 阅读详情

相关推荐

Unity-Chan Toon Shader卡通渲染学习

2.0 (UTS2)是一款用于图像和视频的卡通着色器,旨在满足从事卡通着色 3DCG 动画的创作者的需求。二、从0-1复刻UTS21.漫反射UTS2的漫反射部分主要有三个层组成,分别是基本颜色、第一阴影色和第二阴影色,分别对应着美术理论中的白、灰、黑。

qq_63133691的博客 2539

【Unity Shader】Unity Chan的卡通材质

写在前面时隔两个月我终于来更新博客了,之前一直在学东西,做一些项目,感觉没什么可以分享的就一直没写。本来之前打算写云彩渲染或是Compute Shader的,觉得时间比较长所以打算先写个简单的。今天扫项目的时候看到了很早之前下载的Unity Chan的项目,其实很早之前就想要分析下里面的卡通效果是怎么做的。Unity Chan想必很多人都看到或听过Unity Chan,也可以说是Unity酱、Uni

candycat 3万+

【Unity Shader实战】卡通风格的Shader(二)

写在前面好久没写博客了,一定是因为课程作业比较多,一定不是因为我懒,恩恩。三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface Shader中实现描边效果的弊端,也就是只对表面平缓的模型有效。这是因为我们是依赖法线和视角的点乘结果来进行描边判断的,因此,对于那些平整的表面,它们的法线通常是一个常量或者会发生突变(例如立方体的每个面),这样就会导致最后的效果并非如我们所愿。如下

candycat 3万+

Unity Shader 卡通渲染 (一):仿塞尔达荒野之息 Shader(简易版)

温馨提示: 本系列文章面向那些 Shader 刚刚入门,想寻求进一步提升的群体,如果对 Shader 一无所知的话,建议自行搜索其他 Shader入门教程观看学习,再食用本系列文章。 前言: 说起卡通渲染,就不得不提 《塞尔达:荒野之息》。 《塞尔达:荒野之息》可谓 2017 年的神作了,击败了众多 3A 大作,成为了当年的年度游戏。其采用的卡通渲染的美术风格也算是一大亮点(也可能是 Wi...

西河某人的博客 6969

通过卡通渲染描边shader来学习Unity的Shader写法

Unity自带了很多shader,其中就包含卡通渲染和描边的shader。但是我在实际开发游戏的过程中还是遇到了这些shader无法解决的问题。         于是,我们需要理解如何写Unity的shader,并且按照我们自己的需求编写一个新的shader。         大多数情况下,我们遇到的实际问题要比一个酷炫的demo复杂和恶心。就像Daikon Forge GUI插件非常完善的A

langresser的专栏 7992

【Unity】卡通风格的Shader(二)

写在前面 本系列其他文章: 卡通风格的Shader(一) 好久没写博客了,一定是因为课程作业比较多,一定不是因为我懒,恩恩。     三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface Shader中实现描边效果的弊端,也就是只对表面平缓的模型有效。这是因为我们是依赖法线和视角的点乘结果来进行描边判断的,因此,对于那些平整的表面,它们的法线通常是一个

feixiangdixiaoniao的专栏 882

Unity Shader 非真实感渲染 卡通风格

Shader "MyShader/ToonShading" { Properties{ _Color("Color Tint", Color) = (1, 1, 1, 1) _MainTex("Main Tex", 2D) = "white" {} _Ramp("Ramp Texture", 2D) = "white" {} ...

songhuanfei2017的博客 970

Unity卡通渲染Shader资源包

在深入探讨如何使用Shader实现卡通渲染之前,我们首先要了解Shader语言及其在Unity中的应用。Shader语言是编写着色器(Shaders)的编程语言,其基本功能是定义如何将3D模型映射到屏幕上,包括如何处理光照、纹理、颜色等。常见的Shader语言包括HLSL(High-Level Shading Language)、GLSL(OpenGL Shading Language)以及Unity专用的ShaderLab。

weixin_42584507的博客 652

从Arduino IDE到Atmel Studio:ATmega328P开发的进阶之路

本文探讨了从Arduino IDE转向Atmel Studio进行ATmega328P开发的进阶路径。通过对比两者差异,详细介绍了Atmel Studio的环境配置、寄存器操作思维、烧录方法及高级调试功能,帮助开发者突破Arduino的封装限制,实现对单片机底层硬件的精细控制与性能优化,提升嵌入式开发的专业能力。

weixin_29193259的博客 122

关于光耦隔离与SP3485E芯片一起使用无法拉高485使能引脚问题

最近在做的一个项目,定制了一块STM32F407ZG的工控板,工控板载4个485接口全部都是只能接收数据,不能对外发送数据。1.接线不正确:接线不正确导致485收发出现问题。 2.程序端口初始化问题:控制光耦隔离的输入脚IO的初始化和置位状态有问题。 3.GPIO复用问题:控制对应串口的GPIO不是正点原子默认的GPIO,而是经过复用的其他IO,复用问题。 4.程序设置与485E芯片收发模式不对应:对于使能引脚的电平要根据光耦的输出情况确定输入IO与RE的关系,可能模式没有对应。 5.光耦隔离或者SP485

weixin_45862642的博客 2978

【DeepSeek开发入门】DeepSeek API 开发初体验

在人工智能蓬勃发展的时代,DeepSeek作为一款功能强大的AI大模型,为开发者提供了丰富的接口和便捷的开发体验。本文将基于DeepSeek的几个关键接口,带你快速入门,开启DeepSeek开发的探索之旅。通过本文,你已经初步了解了DeepSeek开发中几个重要接口的使用方法,包括列出模型、对话补全和查询余额接口,以及开发过程中的常见问题及解决办法。这是你踏入DeepSeek开发领域的第一步。在后续的学习中,你可以深入研究模型的参数调优,探索不同模型在各种场景下的应用,如利用模型实现更复杂的推理对话功能。

寻道AI,探索AI无限可能! 2756

计算机视觉与深度学习 | Matlab实现ORBSLAM2(附完整代码)

================================================ 博主github:https://github.com/MichaelBeechan 博主优快云:https://blog.youkuaiyun.com/u011344545 ================================================ 代码阅览 效果图 代码 imdsLeft = imageDatastore('C:\MichaelSpace\matlabworks

尘世冰封的专栏 1522

外骨骼机器人(五):步态分析之正常步态

研究病理步态之前,需要了解正常步态,作为判断标准。但是需要记住两个问题:1.“正常”因人而异,性别、年龄、身体情况都需要考虑在内,因此,需要对不同的个体选择合适的正常标准;2.即使病人的步态与正常步态有某种不同,这也不能说明这是不可取的,也不能说明应该把它变成“正常”步态。许多步态异常是对病人的一些问题的一种补偿,尽管异常,但它们仍然是有用的。步态周期的定义是连续为两次发生重复行走事件之间的时间间隔。尽管可以选择任何事件来定义步态周期,但通常使用一只脚接触地面的瞬间(“初始接触”)是方便的。

行者无疆的博客 1995

PyTorch深度学习实战(39)——少样本学习(Few-shot Learning)

小样本学习 (Few-shot Learning) 旨在解决在训练集中只有很少样本的情况下进行分类和推理的问题。在小样本学习中,我们希望通过利用已有的少量样本和先验知识来进行泛化,以便在面对新的、未见过的类别时能够做出准确的预测。这就要求模型能够从有限的训练样本中提取出有用的信息,并能够将这些信息应用到新类别的样本中去。在本节中,将介绍孪生、原型和关系网络的原理,并使用 PyTorch 实现孪生网络。

盼小辉丶的博客 1万+

YOLO26涨点改进 | 全网首发Conv独家改进篇 | CVPR 2025 | 引入GCConv卷积改进YOLO26,含GCC3k2二次创新,能够捕捉更加丰富和复杂的特征信息,助力高效涨点

本文提出了一种基于GCConv模块的YOLO26目标检测模型改进方案。GCConv模块通过多路径结构增强特征学习能力,在训练阶段采用垂直多卷积和水平多路径配置,推理时重参数化为单一3x3卷积,显著提升推理速度而不损失性能。实验表明,该模块在复杂场景和多尺度目标检测任务中表现优异,特别适合资源受限的实时应用场景。文章详细介绍了GCConv的网络结构、核心代码实现、YAML配置文件修改方法,并提供了两种改进方案(GCConv和GCC3k2)的具体配置指导。

Ai缝合怪、助力小伙伴高效发论文 321

从 AI 助手到 ADT 自动化桥梁:全面解析 Vibing Steampunk 的定位、能力边界与典型使用场合

Vibing Steampunk是一个面向SAP ABAP开发的AI自动化工具集,它通过ADT API将SAP开发能力系统化地暴露给AI助手和命令行工作流。该工具支持ECC、S/4HANA等所有启用ADT的系统,提供代码读取、修改、测试、调试等全流程自动化能力。核心功能包括AI调试、上下文压缩、ABAP语言服务、Lua脚本自动化等,并内置多重安全控制。其分层架构兼容标准ADT和WebSocket扩展,既适合AI驱动开发,也支持传统DevOps自动化,特别适用于老系统代码考古、知识接力和复杂问题诊断场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 151

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 【游戏科普】使用心理学法则创建优秀的用户界面
下一篇: 【Unity Shaders】Vertex Magic —— 访问顶点颜色
妈妈说女孩子要自立自强
博客等级 码龄15年 1万+粉丝 111原创
评论 31
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值