Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
着色器在编辑器中工作,但在iPhone上不工作_Iphone_Unity3d_Shader_Metal - Fatal编程技术网

着色器在编辑器中工作,但在iPhone上不工作

着色器在编辑器中工作,但在iPhone上不工作,iphone,unity3d,shader,metal,Iphone,Unity3d,Shader,Metal,我使用的下一个脚本是在这张照片上找到的绘画资源 当您在网格的uv空间中渲染网格的面时,您将同时将孤岛重建为一个三角形。在岛的边缘,这可能是由于低估了光栅化不考虑一个像素实际上是在岛上。对于这些像素,不会执行任何像素着色器,并且会留下一条折痕。(从网站上获取的文本和图像) 基本思想是,在更新绘制纹理后的每一帧,我在整个纹理上运行着色器,并使用过滤器和uv孤岛的预烘焙遮罩,将孤岛向外延伸 问题是它在iPhone上不起作用。没有错误,没有奇怪的颜色,就像脚本没有被应用一样。我不确定问题出在哪里。可能

我使用的下一个脚本是在这张照片上找到的绘画资源

当您在网格的uv空间中渲染网格的面时,您将同时将孤岛重建为一个三角形。在岛的边缘,这可能是由于低估了光栅化不考虑一个像素实际上是在岛上。对于这些像素,不会执行任何像素着色器,并且会留下一条折痕。(从网站上获取的文本和图像)

基本思想是,在更新绘制纹理后的每一帧,我在整个纹理上运行着色器,并使用过滤器和uv孤岛的预烘焙遮罩,将孤岛向外延伸

问题是它在iPhone上不起作用。没有错误,没有奇怪的颜色,就像脚本没有被应用一样。我不确定问题出在哪里。可能是for循环或c#中使用的命令缓冲区

Shader“未照明/固定散点”
{
子阴影
{
// =====================================================================================================================
//标签和设置------------------------------------------
标记{“RenderType”=“不透明”}
LOD 100
通过
{
// =====================================================================================================================
//定义并包括----------------------------------
CGP程序
#pragma顶点顶点
#布拉格碎片碎片
#包括“UnityCG.cginc”
// =====================================================================================================================
//减退----------------------------------
结构appdata
{
浮动4顶点:位置;
float2uv:TEXCOORD0;
};
结构v2f
{
float2uv:TEXCOORD0;
浮动4顶点:SV_位置;
};
取样器2D_MainTex;
均匀浮动4_MainTex_TexelSize;
采样器2D\u IlsandMap;
// =====================================================================================================================
//顶点碎片----------------------------------
v2f垂直(appdata v)
{
v2fo;
o、 顶点=UnityObjectToClipPos(v.vertex);
o、 uv=v.uv;
返回o;
}
固定4框架(v2f i):SV_目标
{
固定4列=tex2D(_MainTex,i.uv);
浮动贴图=tex2D(_IlsandMap,i.uv);
浮动3平均值=col;
如果(map.x<0.2){//仅当它不在uv区域时取平均值
int n=0;
平均值=浮动3(0,0,0.);

对于(float x=-1.5;x)您是否尝试过在编辑->项目设置->图形->始终包含着色器中添加着色器?是的,我这样做了:)有人有什么建议吗?
Shader "Unlit/FixIlsandEdges"
{

    SubShader
    {
        // =====================================================================================================================
        // TAGS AND SETUP ------------------------------------------
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {


        // =====================================================================================================================
        // DEFINE AND INCLUDE ----------------------------------
            CGPROGRAM
            #pragma  vertex   vert
            #pragma  fragment frag

            #include "UnityCG.cginc"

            // =====================================================================================================================
            // DECLERANTIONS ----------------------------------
            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv      : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv      : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

                    sampler2D    _MainTex;
            uniform    float4        _MainTex_TexelSize;
                    sampler2D   _IlsandMap;

            // =====================================================================================================================
            // VERTEX FRAGMENT ----------------------------------
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv     = v.uv;
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {

            fixed4 col = tex2D(_MainTex, i.uv);
            float map  = tex2D(_IlsandMap,i.uv);

            float3 average = col;

            if (map.x < 0.2) {                                    // only take an average if it is not in a uv ilsand
                int n = 0;
                average = float3(0., 0., 0.);

                for (float x = -1.5; x <= 1.5; x++) {
                    for (float y = -1.5; y <= 1.5; y++) {

                        float3 c =  tex2D(_MainTex, i.uv + _MainTex_TexelSize.xy*float2(x, y));
                        float  m =  tex2D(_IlsandMap, i.uv + _MainTex_TexelSize.xy*float2(x, y));

                               n += step(0.1, m);
                         average += c * step(0.1, m);

                    }
                }

                average /= n;
            }

            col.xyz = average;

                return col;
            }
            ENDCG
        }
    }
}