aspx网站html静态化怎么做基于互联网怎样做网站推广
- 作者: 多梦笔记
- 时间: 2026年02月16日 02:16
当前位置: 首页 > news >正文
aspx网站html静态化怎么做,基于互联网怎样做网站推广,查公司法人天眼查,莒县做网站的电话文章目录 前言一、UI中的遮罩1、Mask —— 模板测试2、RectMask2D —— UNITY_UI_CLIP_RECT 二、模板缓冲区Stencil一般是和Pass平行的部分#xff0c;Pass部分写的是颜色缓冲区Stencil:Comp#xff08;比较操作#xff09;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 Pass _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则是比较通过的值保存缓冲区中的值
测试代码
ShaderMyShader/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、最终测试代码
ShaderMyShader/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}}
}效果
- 上一篇: aspcms网站使用教程昆明做网站排名
- 下一篇: aspx网站模板wordpress无法更新创建
相关文章
-
aspcms网站使用教程昆明做网站排名
aspcms网站使用教程昆明做网站排名
- 站长
- 2026年02月16日
-
aspcms网站地图义乌网站建设联系方式
aspcms网站地图义乌网站建设联系方式
- 站长
- 2026年02月16日
-
asp+sql server典型网站建设案例长乐区建设局网站
asp+sql server典型网站建设案例长乐区建设局网站
- 站长
- 2026年02月16日
-
aspx网站模板wordpress无法更新创建
aspx网站模板wordpress无法更新创建
- 站长
- 2026年02月16日
-
asp后台怎么加载网站网站名字和域名
asp后台怎么加载网站网站名字和域名
- 站长
- 2026年02月16日
-
asp技术做网站网站宣传的方法主要有
asp技术做网站网站宣传的方法主要有
- 站长
- 2026年02月16日
