虚线出现在光球图像中

dotted lines are showingup in an image of a photosphere

我创建了一个光球并在球内添加了一个等距柱状着色器,然后我添加了 image.the 问题是(“图像上显示虚线如何解决?)you can see the dotted lines

there is distortion of the image

我用的shader源码是

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"

}

这可能是由多种原因造成的。我脑海中浮现的两个是:

  1. 图像因 Unity 的导入设置而降级:在这种情况下,转到 select 您 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); 

把它颠倒过来了。我怎么能反过来呢?