卷〇中对UTS2的文件框架进行简单梳理,本文正式进入根目录下的第一个shader。 理论分析 进入根目录,从文档所说相对传统的Toon_DoubleShadeWithFeather.shader开始,跳过属性部分,subshader中有数个pass,分别为Outline、FORWARD、FORWARD_DELTA、ShadowCaster。 先进入Outline Pass,应该是负责卡通渲染中比较经典的描边效果。
这个Shader分为两个pass,第一个pass用于渲染边框,本次的计算都是在视角空间完成的,所以注意我们的顶点和法线都是转换到视角空间,然后由视角空间再转换到裁剪空间。然后我们将顶点稍微往外延伸一点出来,最后使用UnityViewToClipPos把视角空间的坐标转换到裁剪空间。 至于片元着色器,由于线框是纯色,所以直接返回我们设定...
Shader"Zero/UGUI/TextOutline"{Properties{_MainTex("Texture",2D)="white"{}//外边框颜色_OutlineColor("Outline Color",Color)=(0,0,0,1)}SubShader{Tags{"Queue"="Transparent""RenderType"="Transparent"}CullOffLightingOffZWriteOffZTestAlwaysBlendSrcAlphaOneMinusSrcAlphaPass{CGPROGRAM#pragmavertex vert#...
Shader脚本如下,光照模型采用半兰伯特: 1 Shader "MyUnlit/CartoonShading" 2 { 3 Properties 4 { 5 _Color("Color Tint",Color)=(1,1,1,1) 6 _MainTex ("Texture", 2D) = "white" {} 7 _Ramp("Ramp Texture",2D)="white"{} 8 _Outline("Outline",Range(0,0.1))=0.02 9 _Factor("Factor ...
Unity shader学习之卡通渲染,轮廓线 效果如下(头部无轮廓): 原理:使用2个pass来渲染。 第一个pass中,使用轮廓线颜色渲染整个背面,并在视角空间下把模型顶点沿着法线方法向外扩张一段距离,来让轮廓线可见,公式为: viewPos += viewNormal * _Outline;
一、什么是Shader变体管理 想要回答这个问题,要看看什么是Shader变体。 1. 变体 我们用ShaderLab编写Unity中的Shader,当我们需要让Shader同时满足多个需求,例如,这个是否支持阴影,此时就需要加Keyword(关键字),例如在代码中#pragma multi_compile SHADOW_ON SHADOW_OFF,对逻辑上有差异的地方用#ifdef SHADOW_ON或#if ...
pass 1 - toon outline pass 2 - power up 气焰效果(英文暂时不知道叫啥,这里暂时叫:power up) pass - 气焰 思路: FORWARD pass 先写入模板值:90 然后气焰不绘制 stencil 90 的部分 气焰shader 思路写在了 shader 代码的注释中 //=== power up START === struct appdata_powerup { float4 vertex :...
theInjection PointasAfter Rendering Post Processing, but make sure that in theRequirements, bothColorandNormalare selected, as this option controls which data is passed to our shader. Finally, set thePass IndextoBlitand our outline effect should be visible in both the Scene View and Game View!
2)Pass可用 "LightMode"="ForwardBase" 5.RenderSetup 1)Cull剔除 Cull Front/Back/Off 2)深度测试和写入 ZWrite Off ZTest Off 3)Blend——透明混合设置 BlendOp Blend效果 6.方法 UnityCG.cginc常用结构体 书写建议: 1.移动平台的shader尽可能使用精度低的变量:fixed-half-float ...
Shader实现描边流程大致为:对模型进行2遍(2个pass)绘制,第一遍(描边pass)在vertex shader中对模型沿顶点法线方向放大,fragment shader设置输出颜色为描边颜色;第二遍正常绘制模型,除被放大的部分外,其余被覆盖,这样就有了描边的效果。 实现代码如下: Shader "Custom/OutlineShader" { Properties { _MainTex ("Albedo...