Я пытаюсь посмотреть, как выглядят шейдеры в интерфейсе Builder с использованием набора спрайтов, и хотел бы использовать некоторые из шейдеров в ShaderToy. Чтобы сделать это, я создал файл «shader.fsh», файл сцены и добавил цвет спрайта на сцену, предоставив ему собственный шейдер (shader.fsh)Использование шейдеров Shadertoy в построителе интерфейса (Xcode)
В то время как работают очень простые шейдеры:
void main() {
gl_FragColor = vec4(0.0,1.0,0.0,1.0);
}
Любая попытка я сделать, чтобы преобразовать шейдеры из ShaderToy вызывают Xcode замерзать (спиннинг цвета шар), как только попытка сделать их.
Шейдер Я работаю с, например, является this one:
#define M_PI 3.1415926535897932384626433832795
float rand(vec2 co)
{
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
void mainImage(out vec4 fragColor, in vec2 fragCoord)
{
float size = 30.0;
float prob = 0.95;
vec2 pos = floor(1.0/size * fragCoord.xy);
float color = 0.0;
float starValue = rand(pos);
if (starValue > prob)
{
vec2 center = size * pos + vec2(size, size) * 0.5;
float t = 0.9 + 0.2 * sin(iGlobalTime + (starValue - prob)/(1.0 - prob) * 45.0);
color = 1.0 - distance(fragCoord.xy, center)/(0.5 * size);
color = color * t/(abs(fragCoord.y - center.y)) * t/(abs(fragCoord.x - center.x));
}
else if (rand(fragCoord.xy/iResolution.xy) > 0.996)
{
float r = rand(fragCoord.xy);
color = r * (0.25 * sin(iGlobalTime * (r * 5.0) + 720.0 * r) + 0.75);
}
fragColor = vec4(vec3(color), 1.0);
}
Я пробовал:
- Замена mainImage() с основной (пустоте) (так что она будет называться)
- Замена переменных iXxxxx (iGlobalTime, iResolution) и переменных fragCoord со связанными с ними переменными (на основе предложений here)
- Замена некоторых переменных (iGlobalTime) ...
При изменении mainImage в основной() и замена из переменных получил его на работу без ошибок в режиме реального времени TinyShading тестер приложение - результат всегда один и тот же в Xcode (вращающийся шар, замораживание). Любой совет здесь был бы полезен, поскольку на данный момент имеется довольно мало информации.
Любые новости по этому вопросу? – salocinx
@salocinx - Я бы отказался от этого. У вас такие же проблемы? – BadPirate
Не совсем те же проблемы ... Я попытался скомпилировать этот файл: https://www.shadertoy.com/view/MtB3zW, как вы предложили, и я также прочитал связанные страницы. Я также заменил каждое неизвестное поле соответствующими аналогами, а также соответствующим образом изменил подпись основного. Но я получаю некоторые ошибки «не-const ссылки не могут связываться с векторным элементом». X-Code до сих пор не зависает с простыми шейдерами, но функции матрицы шейдеров, похоже, реализованы иначе, чем в шейдерном языке WebGL ... Apple сделала это иначе, чем остальная часть мира - еще раз ...; -) – salocinx