Я немного коды, как это:Scenekit SCNShadable Texture2D не работаю
let myShader =
"#pragma arguments\n" +
"sampler uMaskTex;\n" +
"uniform sampler2D uMaskTex;\n" +
"#pragma body\n" +
//none of these work
"vec3 mask = texture2D(uMaskTex , vec2(1.,1.)).xyz;\n" +
//"vec3 mask = texture2d(uMaskTex , vec2(1.,1.)).xyz;\n" +
//"vec3 mask = texture(uMaskTex , vec2(1.,1.)).xyz;\n" +
"_output.color.rgb = vec3(1.);"
я получить розовые сетки. Если я прокомментирую строки texture2D, то шейдер работает. Я не вижу ошибок в консоли. Униформа не нарушает его, так что я предполагаю, что они работают (хотя я действительно смущен, почему мне нужны два из них, один для другого для металла).
Каков правильный способ считывания единого семплера2D из шейдера с помощью этого механизма SCNShadable?
Почему вы отметили это с помощью 'metal'? Вы каким-то образом используете Metal? –
потому что, если я понимаю, что glsl передается на любой язык затенения металла. Я знаю, что у меня были некоторые проблемы с глобальными функциями, подобными этому: http://stackoverflow.com/questions/37762535/scenekit-shader-modifier-for-geometry-entry-points-works-in-ios-but-not -os-x Я использую PBR, и, похоже, он работает с металлом исключительно (получал некоторые предупреждения вдоль этих строк). Вы говорите мне, должен ли он быть помечен металлом или нет? В документации говорится объявить две униформы: одну для металлической для GLSL, хотя я могу написать только GLSL. Я использую металл или нет? – pailhead
@ НикольБолас Я не пытаюсь быть злым или чем-то еще, но, учитывая приведенный ниже ответ, это сделало его более или менее проблемой металла? Мне действительно интересно, в основном потому, что я разочарован сценой и ее документацией :) – pailhead