2017-10-16 14 views
1

J'essaie d'appliquer des fonctionnalités de permutation de palettes dans mon jeu pixel art spritekit 2d et il semble que lors de l'application d'un SKShader, le filteringMode sur la texture SKSpriteNode est ignoré. En conséquence, je crois que je dois d'abord appliquer la coloration du plus proche voisin, puis faire la logique d'échange de palettes en second lieu. Basé sur un code trouvé ici sur shader toy j'ai fait cette tentative qui semble être la bonne direction et la logique me semble si les coordonnées sont normalisées et (0.0, 0.0) est le bas à gauche et (1.0 , 1.0) en haut à droite, mais le résultat sort WAY trop blocky.SKSpriteNode plus proche voisin utilisant SKShader fragment shader

https://www.shadertoy.com/view/MllSzX

Mon adaptation pour un fichier shader.fsh:

void main() { 

    float texSize = 48.0; 
    vec2 pixel = v_tex_coord * texSize; 
    float c_onePixel = 1.0/texSize; 
    pixel = (floor(pixel)/texSize); 
    gl_FragColor = texture2D(u_texture, pixel + vec2(c_onePixel/2.0)); 
} 

Comment puis-je obtenir le plus proche voisin de travailler sur mon SKShader avant de passer à mon échange de palette?

Répondre

0

Pas une réponse parfaite à la mienne, mais je suis parvenu à éviter ce problème en ajoutant PrefersOpenGL-YES dans mon info.plist mais je comprends qu'il est préférable d'utiliser le métal lorsque cela est possible sur ios