Ich habe einige Code wie folgt:Scenekit SCNShadable Texture2D funktioniert nicht
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.);"
Ich bekomme eine rosa Masche. Wenn ich die texture2D Zeilen auskommentiere, funktioniert der Shader. Ich bekomme keine Fehler in der Konsole. Die Uniformen brechen es auch nicht, also nehme ich an, dass sie funktionieren (obwohl ich wirklich verwirrt bin, warum ich zwei von ihnen brauche, einen für opengl, den anderen für Metall).
Was ist der richtige Weg, um einen einheitlichen Sampler2D von einem Shader mit diesem SCNShadable-Mechanismus zu lesen?
Warum hast du das mit 'metal' markiert? Benutzt du Metal in irgendeiner Weise? –
weil, wenn ich verstehe, glsl wird transpiled, was auch immer Metall Schattierungssprache ist. Ich weiß, dass ich einige Probleme mit globalen Funktionen hatte, die dem ähnlich sind: http://stackoverflow.com/questions/37762535/scenekit-shader-modifier-for-geometry-entry-points-works-in-ios-but-not -os-x Ich benutze PBR und es scheint ausschließlich mit Metall zu arbeiten (habe einige Warnungen in diese Richtung bekommen). Sagst du mir, sollte es mit Metall getaggt sein oder nicht? Die Dokumentation sagt, zwei Uniformen zu erklären, eine für Metall für GLSL, obwohl ich vielleicht nur GLSL schreibe. Benutze ich Metall oder nicht? – pailhead
@NicolBolas Ich versuche nicht, gemein oder so zu sein, aber angesichts der folgenden Antwort ist es mehr oder weniger ein Metal-Problem? Ich bin wirklich neugierig, vor allem, weil ich mit Scenekit frustriert bin und es ist Dokumentation :) – pailhead