huang11055
这个作者很懒,什么都没留下…
展开
-
【Unity-Shader】顶点着色器和片段着色器
一、简介二、代码Shader "Unlit/NewUnlitShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM//Cg代码段标志, 与END.原创 2021-02-10 23:39:14 · 499 阅读 · 0 评论 -
[Unity-Shader]6.Pass-模板
一、模板的作用模板缓冲区可用作一般母的的每像素遮罩,以便保存或者丢弃像素。【官网】所以有时候需要继续图片的遮罩或者是裁剪就可以使用模板二、实现原理模板缓冲区通常是每像素 8 位整数。该值可以写入、递增或递减。后续绘制调用可以根据该值进行测试,以确定在运行像素着色器之前是否应丢弃像素。三、渲染管线的环节https://www.cnblogs.com/SouthBegonia/p/11564407.html四、语法Stencil { Ref 1//Reference V原创 2021-02-05 01:11:11 · 109 阅读 · 0 评论 -
[Unity-Shader]5.Pass
一、语义块Pass[Name][Tags][RenderSetup]}二、名字【Name】表示当前的pass名字,可以用来让其他的shader文件进行直接调用,使用UsePass命令来表示。注意在是使用UsePass调用需要将名字写成大写,这是因为内部中,Name将被转化成大写。三、标签【Tags】在Pass中,标签是用来控制词通道在光照管线(环境光,顶点光照,像素光照等)具有的那个角色以及某一些其他选项。以下的标签必须是在Pass中,不能在SubShader中。1、原创 2021-02-04 01:04:59 · 266 阅读 · 0 评论 -
[Unity-Shader]4.SubShader-状态设置Blend
一、原理1、当同时存在透明物体和不透明物体,首先渲染不透明物体,将不透明物体颜色写入颜色缓存,深度写入深度缓冲区,然后渲染透明物体(关闭深度写入,开启深度测试),将透明物体的颜色与颜色缓冲中的颜色混合,得到正确结果。所以Blend操作的作用是--用来制作透明物体或者进行纹理混合。2、混合操作的发生时间点是shader渲染的最后一步。如下图可见,像素点通过光照模型,顶点着色器,剔除,深度测试,雾效,片元着色器,透明度测试,最后到混合操作。3、UnityShaderLab提供了相应的Ble...原创 2021-01-31 23:58:18 · 378 阅读 · 0 评论 -
[Unity-Shader]4.SubShader-状态设置ZWrite
一、原理1、在unity中渲染物体的顺序主要是先通过渲染队列判断较前的先渲染,之后执行zwrite和ztest,也就是深度测试和深度写入。2、那什么是深度呢?就是我们在不使用深度测试的时候,我们先绘制一个距离较近的物体,在绘制一个距离较远的物体,这样就无法通过其他方式去控制物体的绘制顺序,导致一些重叠效果不好。而使用深度缓冲之后,绘制就是根据z值 也就是深度值来计算,跟物体距离相机远近没有关系。3、那什么是深度缓冲?就是z-buffer,通过存储每个刑诉点的深度值,开启深度缓冲区,在绘制之前Op原创 2021-01-30 23:55:26 · 589 阅读 · 0 评论 -
[Unity-Shader]4.SubShader-状态设置ZTest
一、原理二、ZTest作用ZTest即深度测试,所谓测试,就是针对当前对象在屏幕上(更准确的说是frame buffer)对应的像素点,将对象自身的深度值与当前该像素点缓存的深度值进行比较,如果通过了,本对象在该像素点才会将颜色写入颜色缓冲区,否则否则不会写入颜色缓冲。三、语义ZTest Less | Greater | LEqual | GEqual | Equal | NotEqual | Always四、数值说明ZTest Less(深度小于当前缓存则通过)ZTe...原创 2021-01-30 23:43:23 · 389 阅读 · 0 评论 -
[Unity-Shader]4.SubShader-状态设置Cull
一、语义SubShader { Tags { "ForceNoShadowCasting"="true" } Pass { ... } }二、作用三、参考https://docs.unity3d.com/cn/current/Manual/SL-SubShaderTags.htmlhttps://blog.csdn.net/maozi_bsz/article/details/78008027https://zhuanlan.zhihu.com/p/51080323...原创 2021-01-28 01:53:53 · 814 阅读 · 0 评论 -
[Unity-Shader]3.SubShader的Tags--PreviewType
一、语义SubShader { Tags { "PreviewType"="true" } Pass { ... } }二、作用PreviewType指示材质检视面板预览应如何显示材质。默认情况下,材质显示为球体,但也可以将 PreviewType 设置为“Plane”(将显示为 2D)或“Skybox”(将显示为天空盒)。三、参考https://docs.unity3d.com/cn/current/Manual/SL-SubShaderTags.htmlhttps://blo..原创 2021-01-26 23:28:02 · 771 阅读 · 0 评论 -
[Unity-Shader]3.SubShader的Tags--CanUseSpriteAtlas 标签
一、语义SubShader { Tags { "CanUseSpriteAtlas"="true" } Pass { ... } }二、作用如果着色器用于精灵,请将CanUseSpriteAtlas标签设置为“False”,这样在精灵打包到图集内时,该标签将不起作用,(请参阅精灵打包器 (Sprite Packer))。三、参考https://docs.unity3d.com/cn/current/Manual/SL-SubShaderTags.htmlhttps://blog...原创 2021-01-26 23:26:57 · 463 阅读 · 0 评论 -
[Unity-Shader]3.SubShader的Tags--IgnoreProjector 标签
一、语义SubShader { Tags { "IgnoreProjector"="true" } Pass { ... } }二、作用如果提供了IgnoreProjector标签并且值为“True”,则使用此着色器的对象不会受到投影器的影响。这对半透明对象非常有用,因为投影器无法影响它们。三、参考https://docs.unity3d.com/cn/current/Manual/SL-SubShaderTags.htmlhttps://blog.csdn.net/maozi...原创 2021-01-26 23:25:37 · 1050 阅读 · 0 评论 -
[Unity-Shader]3.SubShader的Tags--ForceNoShadowCasting
一、语义SubShader { Tags { "ForceNoShadowCasting"="true" } Pass { ... } }二、作用如果提供了ForceNoShadowCasting标签并且值为“True”,则使用该子着色器渲染的对象绝不会投射阴影。对透明对象使用着色器替换并且不希望从其他子着色器继承阴影通道时,这非常有用。三、参考https://docs.unity3d.com/cn/current/Manual/SL-SubShaderTags.htmlh...原创 2021-01-26 23:19:47 · 141 阅读 · 0 评论 -
[Unity-Shader]3.SubShader的Tags--DisableBatching
一、语义Tags { "DisableBatching" = "true" }二、作用使用绘制调用批处理时,一些着色器(主要是进行对象空间顶点变形的着色器)不起作用,这是因为批处理会将所有几何体转换为世界空间,所以“对象空间”丢失。三、数值的含义可使用DisableBatching标签来指示这一情况。有三个可能的值:“True”(始终对此着色器禁用批处理)、“False”(不禁用批处理;这是默认值)和“LODFading”(当 LOD 淡化处于激活状态时禁用批处理;主要用于树)。...原创 2021-01-26 23:09:28 · 586 阅读 · 0 评论 -
[Unity-Shader]3.SubShader的Tags--RenderType 渲染类型
一、语义二、作用Unity可以运行时替换符合特定RenderType的所有Shader。Camera.RenderWithShader或者Camera.SetReplacementShader配合使用。三、类型Unity内置的RenderType包括:(1)”Opaque”:绝大部分不透明的物体都使用这个;(2)”Transparent”:绝大部分透明的物体、包括粒子特效都使用这个;(3)”Background”:天空盒都使用这个;(4)”Overlay”:GUI、镜头光晕都...原创 2021-01-26 22:55:48 · 486 阅读 · 0 评论 -
[Unity-Shader]2.SubShader的Tags--Queue渲染队列
一、子着色器的结构Subshader{ [Tags] [CommonState] Passdef [Passdef ...] }二、子着色器标签标签是用来告诉渲染引擎期望何时以及如何渲染对象。语法结构如下Tags{“TagName1”="vaule1" "TagName2"="Vaule2"}三、标签的分类1、决定渲染次序--队列标签:使用Queue来决定对象被渲染的次序。后台(Background) 这个渲染队列在所有队列之前被渲染,被用于渲染天空盒之类的对象...原创 2021-01-20 01:22:20 · 335 阅读 · 0 评论 -
【Unity-Shader】1、语义-Properties
目录1、shader的组成部分2、Properties作用3、Properties格式参考资料:1、shader的组成部分Shader "name" { [Properties] Subshaders [Fallback] [CustomEditor] }2、Properties作用定义shader在unity的inspector面板中显示的变量名字3、Properties格式[Attribute]_Name ("Display Name",Type) = Defau原创 2021-01-19 01:10:23 · 335 阅读 · 0 评论