Pour information, car je pense que cela devrait fortement intéresser les gens qui regardent ce topique, et même Mass, le Hello engine permet en temps réel d'utiliser ce filtre et HQX2 et HQX4.
L’intérêt, c'est "la fondue" entre les différents éléments à afficher, et que ça prend beaucoup moins de taille à stocker dans notre projet (pas besoin de retravailler de sprit faible définition de base, donc il reste dans la mémoire, dans sa taille d'origine).
Je n'ai pas le temps de décortiquer les codes, je vous donne le lien vers une capture de mon projet :
1er essai rapideEt je donne aussi les liens vers le Hello Engine :
Le Youtube de HELLO, le concepteur du moteur "HELLO engine 6.1"Le site web officiel de HELLO pour télécharger le fichier source du "HELLO engine 6.1"[j'espère qu'on ne va pas m'engueuler pour faire de la pub de mon projet Mario]
Alors, j'ai bien fais ?
Edit : et il me semble que le code du filtre dans le Hello Engine, est visible et libre, donc vous pouvez sans doute le récupérer bien-sur, moyennant des remerciements dans vos credits.
Edit : et au cas où, le script ressemble à ça pour le 4X en sachant que 432x768 c'est ma résolution , et il doit y avoir un draw event d'associé, si vous voulez plus d'info, cherchez par vous même dans la Hello Engine, c'est très propre en tout cas :
/*
** HQ4X Vertex Shader
*/
attribute vec3 in_Position;
attribute vec4 in_Colour;
attribute vec2 in_TextureCoord;
varying vec4 v_vTexcoord[7];
varying vec4 v_vColour;
void main()
{
//Set the view height and width here!
float x = 0.5 * (1.0 / 768.0);
float y = 0.5 * (1.0 / 432.0);
vec2 dg1 = vec2( x,y); vec2 dg2 = vec2(-x,y);
vec2 sd1 = dg1*0.5; vec2 sd2 = dg2*0.5;
vec2 ddx = vec2(x,0.0); vec2 ddy = vec2(0.0,y);
vec4 object_space_pos = vec4( in_Position.x, in_Position.y , in_Position.z, 1.0);
gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
v_vTexcoord[0].xy = in_TextureCoord;
v_vTexcoord[1].xy = v_vTexcoord[0].xy - sd1;
v_vTexcoord[2].xy = v_vTexcoord[0].xy - sd2;
v_vTexcoord[3].xy = v_vTexcoord[0].xy + sd1;
v_vTexcoord[4].xy = v_vTexcoord[0].xy + sd2;
v_vTexcoord[5].xy = v_vTexcoord[0].xy - dg1;
v_vTexcoord[6].xy = v_vTexcoord[0].xy + dg1;
v_vTexcoord[5].zw = v_vTexcoord[0].xy - dg2;
v_vTexcoord[6].zw = v_vTexcoord[0].xy + dg2;
v_vTexcoord[1].zw = v_vTexcoord[0].xy - ddy;
v_vTexcoord[2].zw = v_vTexcoord[0].xy + ddx;
v_vTexcoord[3].zw = v_vTexcoord[0].xy + ddy;
v_vTexcoord[4].zw = v_vTexcoord[0].xy - ddx;
v_vColour=in_Colour;
}
Et dans le DRAW GUI :
shader_set(sha_hq4x)
draw_surface_stretched(application_surface,0,0,view_wview[0]*4,view_hview[0]*4)
shader_reset()
il y a peut-être besoin de d'autres code pour vous en servir, je vous invite à vous débrouiller