Cg屏幕捕捉

来源:互联网 发布:ecs 搭建聊天室 python 编辑:程序博客网 时间:2024/06/09 17:19

Behind bars 背后条带

Shader "Custom/WindowCoordinates/Bars" {    SubShader {        Pass {            CGPROGRAM            #pragma vertex vert            #pragma fragment frag            #include "UnityCG.cginc"            struct vertOut {                float4 pos:SV_POSITION;                float4 scrPos;            };            vertOut vert(appdata_base v) {                vertOut o;                o.pos = mul (UNITY_MATRIX_MVP, v.vertex);                o.scrPos = ComputeScreenPos(o.pos);                return o;            }            fixed4 frag(vertOut i) : COLOR0 {                float2 wcoord = (i.scrPos.xy/i.scrPos.w);                fixed4 color;                if (fmod(20.0*wcoord.x,2.0)<1.0) {                    color = fixed4(wcoord.xy,0.0,1.0);                } else {                    color = fixed4(0.3,0.3,0.3,1.0);                }                return color;            }            ENDCG        }    }} ComputeScreenPos:输出屏幕点。
float2 wcoord = (i.scrPos.xy/i.scrPos.w);color = fixed4(wcoord.xy,0.0,1.0);

归一化限制wcrood的值范围(0,1)。
屏幕的宽和长储存在 _ScreenParams 变量中,这个变量已在 UnityCG.cginc 文件中声明。

0 0
原创粉丝点击