虚线显示在光球图像中



我创建了一个光球并在球体内添加了一个等距柱状投影着色器,然后我添加了图像。问题是("图像上显示虚线如何解决?你可以看到虚线

图像失真

我使用的着色器的源代码是

Shader "Unlit/rect"{
Properties {
    _MainTex (" Base (RGB)", 2D) = "gray" {}
}
SubShader{
    Pass {
        Tags {"RenderType"="Opaque" }
     cull front
        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma fragmentoption ARB_precision_hint_fastest
            #pragma glsl
            #pragma target 3.0
            #include "UnityCG.cginc"
            struct appdata {
               float4 vertex : POSITION;
               float3 normal : NORMAL;
            };
            struct v2f
            {
                float4    pos : SV_POSITION;
                float3    normal : TEXCOORD0;
            };
            v2f vert (appdata v)
            {
                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                o.normal = v.normal;
                return o;
            }
            sampler2D _MainTex;
            #define PI 3.141592653589793
            inline float2 RadialCoords(float3 a_coords)
            {
                float3 a_coords_n = normalize(a_coords);
                float lon = atan2(a_coords_n.z, a_coords_n.x);
                float lat = acos(a_coords_n.y);
                float2 sphereCoords = float2(lon, lat) * (1.0 / PI);
                return float2(sphereCoords.x * 0.5 + 0.5, 1 - sphereCoords.y);
            }
            float4 frag(v2f IN) : COLOR
            {
                float2 equiUV = RadialCoords(IN.normal);
                return tex2D(_MainTex, equiUV);
            }
        ENDCG
    }
}
FallBack "VertexLit"

}

这可能是由

多种原因引起的。 我头顶上的两个是:

    Unity 的导入设置
  1. 会降低图像质量:在这种情况下,请在"Project"选项卡中选择图像,在Inspector中取消选中Generate Mip-Maps并确保Inspector底部的导入分辨率设置为高于实际图像分辨率(例如,图像为 1480x1480,然后将导入设置设置为 2048x2048(

  2. 您正在映射图像的球体网格存在 UV 问题。我的意思是,不同程序中的默认球体具有不同的UV贴图。Unity 的默认球体与 Blender 或 Maya 的球体不同。如果您在 3D 建模软件中测试了此图像并且它在那里工作,请导出该球体并在 Unity 中将其用于您的图像。

此着色器可以很好地渲染图像,但图像像镜像一样翻转。改变

float2 equiUV = RadialCoords(IN.normal); 

自:

float2 equiUV = RadialCoords(-IN.normal); 

把它颠倒过来。我怎么能反过来翻转它?

相关内容

  • 没有找到相关文章

最新更新