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