哪个建站比较好,网站建设步骤流程详细介绍,wordpress 修改配置文件,网站php环境搭建文章目录 前言一、屏幕坐标1、屏幕像素的坐标2、屏幕坐标归一化 二、在Unity中获取 当前屏幕像素 和 总像素1、获取屏幕总像素,使用_ScreenParams参数2、获取当前片段上的像素怎么使用:在片元着色器传入参数时使用 前言
Unity中Shader的屏幕坐标 一、屏幕坐标
1、屏幕像素的坐… 文章目录 前言一、屏幕坐标1、屏幕像素的坐标2、屏幕坐标归一化 二、在Unity中获取 当前屏幕像素 和 总像素1、获取屏幕总像素,使用_ScreenParams参数2、获取当前片段上的像素怎么使用:在片元着色器传入参数时使用 前言
Unity中Shader的屏幕坐标 一、屏幕坐标
1、屏幕像素的坐标 2、屏幕坐标归一化 使用公式 屏幕归一化坐标 当前像素 / 总像素 二、在Unity中获取 当前屏幕像素 和 总像素
1、获取屏幕总像素,使用_ScreenParams参数 _ScreenParams 屏幕的相关参数单位为像素。 x表示屏幕的宽度 y表示屏幕的高度 z表示11/屏幕宽度 w表示11/屏幕高度 2、获取当前片段上的像素 UNITY_VPOS_TYPE screenPos : VPOS 1.当前片断在屏幕上的位置(单位是像素,可除以_ScreenParams.xy来做归一化),此功能仅支持#pragma target 3.0及以上编译指令 2.大部分平台下VPOS返回的是一个四维向量部分平台是二维向量所以需要用UNITY_VPOS_TYPE来统一区分. 3.在使用VPOS时就不能在v2f中定义SV_POSITION这样会冲突所以需要把顶点着色器的输入放在()的参数中并且SV_POSITION添加out. 怎么使用:在片元着色器传入参数时使用 fixed4 frag (v2f i,UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target { } VPOS这个类型因为在不同平台不统一有的是 float2 有的是 float4 所以使用Unity提供的类型 UNITY_VPOS_TYPE让Unity自动处理 当使用UNITY_VPOS_TYPE screenPos : VPOS作为片元着色器的输入时需要对顶点着色器的输入做出修改 修改后代码
Shader MyShader/P0_10_2
{SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cgincsampler2D _MainTex;float4 _MainTex_ST;struct appdata{float4 vertex : POSITION;};struct v2f{float2 uv : TEXCOORD0;};//在顶点着色器的输入处不用appdata,直接使用用到的参数防止 SV_POSITION 重复定义v2f vert (float4 vertex : POSITION,out float4 pos : SV_POSITION){v2f o;pos UnityObjectToClipPos(vertex);return o;}fixed4 frag (v2f i,UNITY_VPOS_TYPE screenPos : VPOS) : SV_Target{float2 screenUV screenPos.xy / _ScreenParams.xy;return fixed4(screenUV,0,0);}ENDCG}}
}
效果 输出屏幕归一化的x的效果return screenUV.x; 输出屏幕归一化的y的效果return screenUV.y;