锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Unity 计算屏幕视口UV坐标的几种方法

时间:2022-12-31 10:00:00 紫外线油浸式uv电容器

获取屏幕坐标有三种方式,可用于采样图片。

1.使用unity在顶点着色器中自动切割空间posCS,转换到片段着色器时获得的屏幕空间。

struct v2f {     float4 pos:SV_POSITION; }  v2f vert (adddata v) {     o.pos = UnityObjectToClipPos(v.vertex); }  fixed frag (v2f i):SV_Target {     ///传入这里i.pos必须是SV_POSITION     float2 screenUV = i.pos.xy/_ScreenParams.xy;  }

2.使用从顶点着色器直接传过来的屏幕坐标,然后手动进行透视除法,注意没有进行平台差异的处理。

struct v2f {     float4 screenUV:TEXCOORD1; }  v2f vert (adddata v) {     o.pos = UnityObjectToClipPos(v.vertex);     o.screenUV = o.pos; }  fixed frag (v2f i):SV_Target {     //注意未处理平台差异     float2 uv = i.screenUV.xy/i.screenUV.w * 0.5   0.5; }

3. 使用内置函数处理

struct v2f {     float4 screenUV:TEXCOORD1; }  v2f vert (adddata v) {     o.pos = UnityObjectToClipPos(v.vertex);     o.screenUV = ComputeScreenPos(o.pos); }  fixed frag (v2f i):SV_Target {     float2 uv = i.screenUV.xy/i.screenUV.w; }

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章