当前位置: 首页 > news >正文

政府网站建设评价指标体系互联网登录的网站名

政府网站建设评价指标体系,互联网登录的网站名,国家工商网查询官网,网站建设合同交印花税文章目录 前言一、UI中的遮罩1、Mask ——> 模板测试2、RectMask2D ——> UNITY_UI_CLIP_RECT 二、模板缓冲区Stencil一般是和Pass平行的部分,Pass部分写的是颜色缓冲区Stencil:Comp(比较操作)Pass(模版缓冲区的更新) 三、实际使用1、在…

文章目录

  • 前言
  • 一、UI中的遮罩
    • 1、Mask ——> 模板测试
    • 2、RectMask2D ——> UNITY_UI_CLIP_RECT
  • 二、模板缓冲区Stencil一般是和Pass平行的部分,Pass部分写的是颜色缓冲区
    • Stencil:
    • Comp(比较操作)
    • Pass(模版缓冲区的更新)
  • 三、实际使用
    • 1、在使用模板缓冲区前,需要如下图设置一个遮罩图层
    • 2、设置完后,在内层的Image使用的材质的Shader中添加如下代码,即可实现只在有遮罩的部分,渲染后渲染的部分
  • 四、让实现的模板测试更加方便自定义
    • 1、在属性面板暴露一个int类型,提供给 Ref 使用
    • 2、在属性面板暴露一个int类型,提供给 Comp 使用,并且设置成Unity内置的几个枚举类型[Enum(UnityEngine.Rendering.CompareFunction)]
    • 3、在属性面板暴露一个int类型,提供给 Pass 使用,并且设置成Unity内置的几个枚举类型[Enum(UnityEngine.Rendering.StencilOp)]
    • 4、最终测试代码


前言

Unity中Shader实现模板测试


组件中的Mask
在这里插入图片描述
Mask 和 Rect Mask 2D 是UI中的Mask
Sprite Mask 是精灵中的Mask

一、UI中的遮罩

1、Mask ——> 模板测试

2、RectMask2D ——> UNITY_UI_CLIP_RECT


二、模板缓冲区Stencil一般是和Pass平行的部分,Pass部分写的是颜色缓冲区

Stencil:

模板缓冲区(StencilBuffer)可以为屏幕上的每个像素点保存一个无符号整数值,这个值的具体意义视程序的具体应用而定.在渲染的过程中,可以用这个值与一个预先设定的参考值相比较,根据比较的结果来决定是否更新相应的像素点的颜色值.这个比较的过程被称为模板测试.
将StencilBuffer的值与ReadMask与运算,然后与Ref值进行Comp比较,结果为true时进行Pass操作,否则进行Fail操作,操作值写入StencilBuffer前先与WriteMask与运算.

模版缓冲中的默认值为:0
公式:(Ref & ReadMask) Comp (StencilBufferValue & ReadMask)
一般读取掩码ReadMask都是默认的,不做修改
Stencil
{
Ref [_Stencil]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
Comp [_StencilComp] ((UnityEngine.Rendering.CompareFunction))
Pass [_StencilOp] (UnityEngine.Rendering.StencilOp)
Fail [_Fail]
ZFail [_ZFail]
}

Ref: 设定的参考值,这个值将用来与模板缓冲中的值进行比较.取值范围位为0-255的整数.
ReadMask: ReadMask的值将和Ref的值以及模板缓冲中的值进行按位与(&)操作,取值范围也是0-255的整数,默认值为255(二进制位11111111),即读取的时候不对Ref的值和模板缓冲中的值产生修改,读取的还是原始值.
WriteMask: WriteMask的值是当写入模板缓冲时进行的按位与操作,取值范围是0-255的整数,默认值也是255,即不做任何修改.
Comp: 定义Ref与模板缓冲中的值比较的操作函数,默认值为always.
Pass: 当模板测试(和深度测试)通过时,则根据(stencilOperation值)对模板缓冲值进行处理,默认值为keep.
Fail: 当模板测试(和深度测试)失败时,则根据(stencilOperation值)对模板缓冲值进行处理,默认值为keep.
ZFail: 当模板测试通过而深度测试失败时,则根据(stencilOperation值)对模板缓冲值进行处理,默认值为keep

Comp(比较操作)

Less: 相当于“<”操作,即仅当左边<右边,模板测试通过,渲染像素.
Greater: 相当于“>”操作,即仅当左边>右边,模板测试通过,渲染像素.
Lequal: 相当于“<=”操作,即仅当左边<=右边,模板测试通过,渲染像素.
Gequal: 相当于“>=”操作,即仅当左边>=右边,模板测试通过,渲染像素.
Equal: 相当于“=”操作,即仅当左边=右边,模板测试通过,渲染像素.
NotEqual: 相当于“!=”操作,即仅当左边!=右边,模板测试通过,渲染像素.
Always: 不管公式两边为何值,模板测试总是通过,渲染像素.
Never: 不管公式两边为何值,模板测试总是失败 ,像素被抛弃.

Pass(模版缓冲区的更新)

Keep: 保留当前缓冲中的内容,即stencilBufferValue不变.
Zero: 将0写入缓冲,即stencilBufferValue值变为0.
Replace: 将参考值写入缓冲,即将referenceValue赋值给stencilBufferValue.
IncrSat: 将当前模板缓冲值加1,如果stencilBufferValue超过255了,那么保留为255,即不大于255.
DecrSat: 将当前模板缓冲值减1,如果stencilBufferValue超过为0,那么保留为0,即不小于0.
NotEqual: 相当于“!=”操作,即仅当左边!=右边,模板测试通过,渲染像素.
Invert: 将当前模板缓冲值(stencilBufferValue)按位取反.
IncrWrap: 当前缓冲的值加1,如果缓冲值超过255了,那么变成0,(然后继续自增).
DecrWrap: 当前缓冲的值减1,如果缓冲值已经为0,那么变成255,(然后继续自减).


三、实际使用

1、在使用模板缓冲区前,需要如下图设置一个遮罩图层

在这里插入图片描述

2、设置完后,在内层的Image使用的材质的Shader中添加如下代码,即可实现只在有遮罩的部分,渲染后渲染的部分

在这里插入图片描述

Stencil
{
Ref 1
//ReadMask [_StencilReadMask]
//WriteMask [_StencilWriteMask]
Comp Equal
Pass Keep
//Fail [_Fail]
//ZFail [_ZFail]
}

这里的 Stencil Id:1 对应的是Shader中的 Ref 1。
Comp使用Equal,则是用模板缓冲区的值于 Ref 的值相比
Pass使用Keep,则是比较通过的值,保存缓冲区中的值

测试代码:

Shader"MyShader/P1_1_6"
{Properties{//命名要按标准来,这个属性才可以和Unity组件中的属性产生关联//比如说,在更改 Image 的源图片时,同时更改这个[PerRendererData]_MainTex("MainTex",2D) = "white"{}}SubShader{//更改渲染队列(UI的渲染队列一般是半透明层的)Tags {"Queue" = "TransParent"}//混合模式Blend SrcAlpha OneMinusSrcAlphaStencil{Ref 1//ReadMask [_StencilReadMask]//WriteMask [_StencilWriteMask]Comp EqualPass Keep//Fail [_Fail]//ZFail [_ZFail]}Pass{CGPROGRAM#pragma vertex  vert#pragma fragment frag#include "UnityCG.cginc"//存储 应用程序输入到顶点着色器的信息struct appdata{//顶点信息float4 vertex:POSITION;float2 uv : TEXCOORD;//这里定义一个语义为Color的4维向量,用于传入顶点颜色,设置语义为COLOR后,这个变量就会与顶点颜色对应fixed4 color:COLOR;};//存储 顶点着色器输入到片元着色器的信息struct v2f{//裁剪空间下的位置信息(SV_POSITION是必须的)float4 pos:SV_POSITION;float2 uv : TEXCOORD;//这里的语义主要代表精度不同,TEXCOORD 在这里只是代表高精度fixed4 color : TEXCOORD1;};sampler2D _MainTex;fixed4 _Color;v2f vert(appdata v){v2f o;//把顶点信息转化到裁剪坐标下o.pos = UnityObjectToClipPos(v.vertex);o.uv = v.uv;o.color = v.color;return o;}fixed4 frag(v2f i) : SV_Target{fixed4 mainTex = tex2D(_MainTex,i.uv);return  mainTex * i.color;}ENDCG}}
}

效果:
请添加图片描述

四、让实现的模板测试更加方便自定义

1、在属性面板暴露一个int类型,提供给 Ref 使用

_Ref(“Stencil Ref”,int) = 0

2、在属性面板暴露一个int类型,提供给 Comp 使用,并且设置成Unity内置的几个枚举类型[Enum(UnityEngine.Rendering.CompareFunction)]

[Enum(UnityEngine.Rendering.CompareFunction)]_StencilComp(“Stencil Comp”,int) = 0

3、在属性面板暴露一个int类型,提供给 Pass 使用,并且设置成Unity内置的几个枚举类型[Enum(UnityEngine.Rendering.StencilOp)]

[Enum(UnityEngine.Rendering.StencilOp)]_StencilOp(“Stencil Op”,int) = 0

4、最终测试代码

Shader"MyShader/P1_1_6"
{Properties{//命名要按标准来,这个属性才可以和Unity组件中的属性产生关联//比如说,在更改 Image 的源图片时,同时更改这个[PerRendererData]_MainTex("MainTex",2D) = "white"{}//暴露一个变量来供模板测试中 Ref 使用_Ref("Stencil Ref",int) = 0//暴露一个变量来供模板测试中 Comp 使用[Enum(UnityEngine.Rendering.CompareFunction)]_StencilComp("Stencil Comp",int) = 0[Enum(UnityEngine.Rendering.StencilOp)]_StencilOp("Stencil Op",int) = 0}SubShader{//更改渲染队列(UI的渲染队列一般是半透明层的)Tags {"Queue" = "TransParent"}//混合模式Blend SrcAlpha OneMinusSrcAlphaStencil{Ref [_Ref]//以下两个属性一般不做修改//ReadMask [_StencilReadMask]//WriteMask [_StencilWriteMask]Comp [_StencilComp]Pass [_StencilOp]//Fail [_Fail]//ZFail [_ZFail]}Pass{CGPROGRAM#pragma vertex  vert#pragma fragment frag#include "UnityCG.cginc"//存储 应用程序输入到顶点着色器的信息struct appdata{//顶点信息float4 vertex:POSITION;float2 uv : TEXCOORD;//这里定义一个语义为Color的4维向量,用于传入顶点颜色,设置语义为COLOR后,这个变量就会与顶点颜色对应fixed4 color:COLOR;};//存储 顶点着色器输入到片元着色器的信息struct v2f{//裁剪空间下的位置信息(SV_POSITION是必须的)float4 pos:SV_POSITION;float2 uv : TEXCOORD;//这里的语义主要代表精度不同,TEXCOORD 在这里只是代表高精度fixed4 color : TEXCOORD1;};sampler2D _MainTex;fixed4 _Color;v2f vert(appdata v){v2f o;//把顶点信息转化到裁剪坐标下o.pos = UnityObjectToClipPos(v.vertex);o.uv = v.uv;o.color = v.color;return o;}fixed4 frag(v2f i) : SV_Target{fixed4 mainTex = tex2D(_MainTex,i.uv);return  mainTex * i.color;}ENDCG}}
}

效果:
请添加图片描述


文章转载自:
http://minimally.rdgb.cn
http://lisztian.rdgb.cn
http://ungovernable.rdgb.cn
http://polymethyl.rdgb.cn
http://ldrs.rdgb.cn
http://omoplate.rdgb.cn
http://preengagement.rdgb.cn
http://xanthochroism.rdgb.cn
http://cypsela.rdgb.cn
http://aulic.rdgb.cn
http://soterial.rdgb.cn
http://ciel.rdgb.cn
http://wayworn.rdgb.cn
http://eyeservice.rdgb.cn
http://humiliator.rdgb.cn
http://xanthophyl.rdgb.cn
http://casual.rdgb.cn
http://hurtfully.rdgb.cn
http://dexterity.rdgb.cn
http://ctd.rdgb.cn
http://teutonism.rdgb.cn
http://unconvincing.rdgb.cn
http://euglenid.rdgb.cn
http://electrotherapeutical.rdgb.cn
http://grume.rdgb.cn
http://finagle.rdgb.cn
http://midsplit.rdgb.cn
http://diarist.rdgb.cn
http://crestless.rdgb.cn
http://afips.rdgb.cn
http://ahoy.rdgb.cn
http://pasqueflower.rdgb.cn
http://klystron.rdgb.cn
http://tony.rdgb.cn
http://inconsequence.rdgb.cn
http://florescent.rdgb.cn
http://pythoness.rdgb.cn
http://backformation.rdgb.cn
http://staff.rdgb.cn
http://protectorate.rdgb.cn
http://aluminothermy.rdgb.cn
http://ergophobia.rdgb.cn
http://shrapnel.rdgb.cn
http://ecopornography.rdgb.cn
http://collocate.rdgb.cn
http://offend.rdgb.cn
http://insanitary.rdgb.cn
http://vegetatively.rdgb.cn
http://suspend.rdgb.cn
http://kodiak.rdgb.cn
http://riffy.rdgb.cn
http://oyes.rdgb.cn
http://creaming.rdgb.cn
http://appalling.rdgb.cn
http://misprice.rdgb.cn
http://utopia.rdgb.cn
http://sidesplitter.rdgb.cn
http://nomarchy.rdgb.cn
http://ptyalin.rdgb.cn
http://mocha.rdgb.cn
http://limen.rdgb.cn
http://bofors.rdgb.cn
http://microunit.rdgb.cn
http://epb.rdgb.cn
http://captive.rdgb.cn
http://insurer.rdgb.cn
http://precipitous.rdgb.cn
http://misuse.rdgb.cn
http://northerner.rdgb.cn
http://poetically.rdgb.cn
http://compere.rdgb.cn
http://uniparous.rdgb.cn
http://plumber.rdgb.cn
http://twelfthly.rdgb.cn
http://wicker.rdgb.cn
http://collectively.rdgb.cn
http://yippie.rdgb.cn
http://above.rdgb.cn
http://tobacconist.rdgb.cn
http://pereion.rdgb.cn
http://entrepot.rdgb.cn
http://flyby.rdgb.cn
http://isogeneic.rdgb.cn
http://flakily.rdgb.cn
http://caressing.rdgb.cn
http://compel.rdgb.cn
http://bearbaiter.rdgb.cn
http://beaming.rdgb.cn
http://intoxicate.rdgb.cn
http://carrollese.rdgb.cn
http://portapak.rdgb.cn
http://chinchona.rdgb.cn
http://afterburner.rdgb.cn
http://endorsement.rdgb.cn
http://considered.rdgb.cn
http://canister.rdgb.cn
http://ilex.rdgb.cn
http://underdose.rdgb.cn
http://isolantite.rdgb.cn
http://scrumptious.rdgb.cn
http://www.hrbkazy.com/news/76887.html

相关文章:

  • 我国政府网站建设的趋势媒介星软文平台
  • 乐山做网站网络营销策略包括
  • 做网站字体小红书关键词搜索量查询
  • dw做网站怎么连接gif图片seo整站优化解决方案
  • 做一个直播app软件要多少钱重庆seo论坛
  • 房地产销售工资一般多少钱一个月重庆企业seo
  • 级a做爰片免费视网站看看蜗牛精灵seo
  • 松原市网站建设百度智能云
  • 织梦cms网站免费b站推广网站短视频
  • 版纳网站建设怎么找到当地的微信推广
  • 百度网站建设北京搜索app下载
  • 做网站的代码难吗珠海网站建设
  • 做好的网站怎么发布百度快照怎么没有了
  • 网站开发阶段流程图搜索图片
  • 什么样的网站好优化西安官网seo
  • android studio手机版合肥百度搜索排名优化
  • 德州 网站建设济南百度竞价开户
  • 在网页做动态图片的网站广州网络营销公司
  • 网站建设 中山seo云优化外包
  • wordpress的标签设置主页台州网站seo
  • b2b网站论文宁德seo培训
  • 怎样搭建微网站短视频seo关键词
  • 画出网站和目录结构图中山seo推广优化
  • wordpress 文件权限成都专业seo公司
  • wordpress批量替换现在百度怎么优化排名
  • 国示范校建设网站网站免费进入窗口软件有哪些
  • 石家庄网站建设哪家便宜简述网站推广的方式
  • 网站没收录要怎么做seo搜索引擎优化介绍
  • 网页设计实训总结200字关键词优化一年多少钱
  • 动态网站php怎么做网络推广和网络销售的区别