Shaders manquant 7.1.1
-
Bonjour,
Moi aussi j'ai un Pi4.
Je n'avais pas testé ce shader mais je viens de le faire et je confirme le problème.
Je n'ai testé que quelques shaders mais je fais le constat suivant :- CRT-CALIGARI --> Trop lent (audio)
- CRT-NES-MINI --> Flou
- ZFAST-CRT-STANDARD--> OK
C'est donc mon choix
A+
-
@holmes merci pout ton retour.
Si pour certaine personnes les shaders sont optionnel, pour moi c'est absolument essentiel. Le rendu crt est plus qu'apprécier de certain puristes.
Je ne comprends pas comment des shaders qui fonctionnait parfaitement sous pi3b+ (également t sous 7.1) ne fonctionnent plus sous pi4...Le filtre crt-pi n'est pas particulièrement gourmand et fonctionnait sur d'ancienne release recabox.
Le seul support ou l'enssemble des shadders fonctionne tous ou presque, c'est sur les version pc. C'est qua'd même dommage
J'aimerais bien savoir si ce point est connu des développeurs ?
-
@Delegnia
Bonne nouvelle j'ai réussi à mettre ton shader préféré (crt-pi) sur mon RPI4 (4GB de Ram)Je suis passé par ce menu de retroarch (charger des préréglages de shaders)
sur l'image du dessous, en haut de l'ecran est inscrit le chemin exact de la ou j'ai pris le shader, ne suis pas d'autres chemins, uniquement celui ci semble fonctionner.
te reste plus qu'a le sauvegarder via retroarch pour tes cores souhaités.
Je suis un peu comme toi, très a cheval sur le rendu video a l'ecran, mais par contre mon choix s'est porté sur crt-nes-mini.
crt-pi (avec pixel perfect)
(cliquer sur les images ci dessous et activer la loupe pour mettre bien voir les scanlines.)
et crt-nes-mini (avec pixel perfect )
J'aime pas le rendu trop net des contours justement (comme crt-pi ou zfast-crt-standard), sur les crt d'époque les couleurs bavaient un peu et de ce fait les jeux utilisaient cet inconveniant pour faire des effets en plus (transparence sur MD, couleurs supplementaires...), on appelle ca le dithering.. Celui a besoin de ce "flou" pour être réalisé et de mon avis seul crt-nes-mini s'en approche le plus. (crt-pi et zfast-crt-standard ne le prennent absolument pas en compte)
La PS1 en a abusé aussi, le cliel de Ridgeracer en est plein, les Wipeout aussi ! !
-
@airdream hello, merci pour ton retour.
Malheureusement le crt-pi que tu a mis n'est pas le .glslp (celui don je parle a les bord incurvés et n'a pas tous a fait les mêmes réglages justement)Voici également un petit comparatif des mes shaders préférés ici, sur Bare Knuckle II
-Le CRT NES mini (pas mal en effet mais des scanlines peu marquées et assez grossieres)
-Le CRT-PI (Incurvé, scanlines bien marquées, rendu bi-lineaire avec Legé flou)
-Le fakelottes (plus incurvées, rendu façon luminophore très CRT, image plus clair)
-z fast crt curve (Assez proche du Crt-pi mais avec des scanlines un peu moins marqué et une image moins incurvées)
A noter, que les rendu des shaders diffèrent entre les écrans.
Pour moi, jouer sans ces filtre est inconcevable. ils fonctionnait très bien sous PI3 sans ralentir les jeux.
je voudrait absolument comprendre pourquoi le crt-pi.glslp ne fonctionne plus ? -
@Delegnia
J'ai l'impression que tu n'avais pas activé le "pixel perfect" pour ton snap crt-nes-mini... sans ca c'est dégeulasseBon cette histoire de crt-pi attise ma curiosité, l'effet est sympa a première vu, faut que je le teste à nouveau. Ce qui m'embete c'est que le nom du shader que j'ai fait fonctionner est bien crt-pi.glslp (on voit bien son nom sur mon screenshot). J'en déduis qu'il y a 2 versions (si ce n'est plus) dont l'un avec cet effet incurvé. J'ai essayé crt-pi-barrel.glslp et crt-pi-mask.glslp mais ils n'ont pas fonctionné. Faudrait voir a l'interieur quel ligne de code peut faire un conflit, ca me dépasse un peu...
Sinon j'ai réussi à accentuer les scanlines de crt-nes-mini
avec ces réglages ci dessous (image), on peut bidouiller pour accentuer les scanlines (intensité et épaisseur) mais aussi la luminosité.crt-nes-mini (customisé par moi)
-
avec un afinement et d'autres réglages
crt-nes-mini custom 2
Bon sinon j'ai bien l'impression que pour crt-pi la version ecran bombé c'est bien "barrel"
je vais essayer de le voir comment est son code, pas normal en effet que ca bloque
-
voila le code de crt-pi.glsl
j'ai essayer de le bidouiller un peu, afin de lui remettre l'effet bombé, sans succès...
Si quelqu'un sait ce qu'il faudrait toucher...#pragma parameter BARREL_DISTORTION_X "Curvature - sides" 0.10 0.0 1.0 0.01 #pragma parameter BARREL_DISTORTION_Y "Curvature - top/bottom" 0.15 0.0 1.0 0.01 #pragma parameter MASK_BRIGHTNESS "Mask brightness" 0.75 0.0 1.0 0.01 #pragma parameter SCAN_LINE_WEIGHT "Scanline weight" 6.0 0.0 15.0 0.1 #pragma parameter BLOOM_FACTOR "Bloom factor" 1.5 0.0 5.0 0.01 #pragma parameter INPUT_GAMMA "Input gamma" 2.4 0.0 5.0 0.01 #pragma parameter OUTPUT_GAMMA "Output gamma" 2.2 0.0 5.0 0.01 // Haven't put these as parameters as it would slow the code down. #define MULTISAMPLE #define CURVATURE #ifdef PARAMETER_UNIFORM uniform float BARREL_DISTORTION_X; uniform float BARREL_DISTORTION_Y; uniform float MASK_BRIGHTNESS; uniform float SCAN_LINE_WEIGHT; uniform float BLOOM_FACTOR; uniform float INPUT_GAMMA; uniform float OUTPUT_GAMMA; #else #define BARREL_DISTORTION_X 0.10 #define BARREL_DISTORTION_Y 0.15 #define MASK_BRIGHTNESS 0.75 #define SCAN_LINE_WEIGHT 6.0 #define BLOOM_FACTOR 1.5 #define INPUT_GAMMA 2.4 #define OUTPUT_GAMMA 2.2 #endif /* COMPATIBILITY - GLSL compilers */ /* crt-pi Copyright (C) 2015 davej This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifdef GL_ES #define COMPAT_PRECISION mediump #else #define COMPAT_PRECISION #endif uniform vec2 TextureSize; varying COMPAT_PRECISION float pixelWidth; varying COMPAT_PRECISION vec2 screenScale; varying COMPAT_PRECISION vec2 TEX0; varying COMPAT_PRECISION float filterWidth; #if defined(VERTEX) uniform mat4 MVPMatrix; attribute vec4 VertexCoord; attribute vec2 TexCoord; uniform vec2 InputSize; uniform vec2 OutputSize; void main() { pixelWidth = 1.0 / TextureSize.x; screenScale = TextureSize / InputSize; filterWidth = InputSize.y / OutputSize.y; TEX0 = TexCoord; gl_Position = MVPMatrix * VertexCoord; } #elif defined(FRAGMENT) uniform sampler2D Texture; vec2 BARREL_DISTORTION = vec2(BARREL_DISTORTION_X, BARREL_DISTORTION_Y); // Barrel distortion shrinks the display area a bit, this will allow us to counteract that. vec2 barrelScale = 1.0 - (0.23 * BARREL_DISTORTION); float bloom = BLOOM_FACTOR / 3.0; vec2 Distort(vec2 coord) { coord *= screenScale; coord -= vec2(0.5); float rsq = coord.x * coord.x + coord.y * coord.y; coord += coord * (BARREL_DISTORTION * rsq); coord *= barrelScale; if (abs(coord.x) >= 0.5 || abs(coord.y) >= 0.5) coord = vec2(-1.0); // If out of bounds, return an invalid value. else { coord += vec2(0.5); coord /= screenScale; } return coord; } float CalcScanLineWeight(float dist) { float invdist = 1.0 - dist; return max(1.0-dist*dist*SCAN_LINE_WEIGHT, invdist*invdist/1.5); } void main() { #if defined(CURVATURE) vec2 texcoord = Distort(TEX0); if (texcoord.x < 0.0) gl_FragColor = vec4(0.0); else #else vec2 texcoord = TEX0; #endif { vec2 texcoordInPixels = texcoord * TextureSize - vec2(0.5); float yCoord = (floor(texcoordInPixels.y) + 0.5) / TextureSize.y; vec2 tc1 = vec2(texcoord.x, yCoord); vec3 colour1 = texture2D(Texture, tc1).rgb; vec2 tc2 = tc1 + vec2(0.0, 1.0/TextureSize.y); vec3 colour2 = texture2D(Texture, tc2).rgb; colour1 = pow(colour1, vec3(INPUT_GAMMA)); colour2 = pow(colour2, vec3(INPUT_GAMMA)); int whichMask = int(floor(mod(gl_FragCoord.x, 2.0))); vec3 mask = vec3(1.0, MASK_BRIGHTNESS, 1.0); if (whichMask == 1) mask = vec3(MASK_BRIGHTNESS, 1.0, MASK_BRIGHTNESS); float dist = fract(texcoordInPixels.y); float scanLineWeightsA = CalcScanLineWeight(dist); float scanLineWeightsB = CalcScanLineWeight(1.0-dist); #if defined(MULTISAMPLE) dist = dist + 1.0/3.0*filterWidth; scanLineWeightsA += CalcScanLineWeight(dist); scanLineWeightsB += CalcScanLineWeight(abs(1.0-dist)); dist = dist - 2.0/3.0*filterWidth; scanLineWeightsA += CalcScanLineWeight(abs(dist)); scanLineWeightsB += CalcScanLineWeight(abs(1.0-dist)); scanLineWeightsB *= bloom; scanLineWeightsA *= bloom; #endif colour1 = colour1 * scanLineWeightsA + colour2 * scanLineWeightsB; colour1 = pow(colour1, vec3(1.0 / OUTPUT_GAMMA)); gl_FragColor = vec4(colour1 * mask, 1.0); } } #endif
ci dessous le code de crt-pi-barrel.glsl
#pragma parameter BARREL_DISTORTION_X "Curvature - sides" 0.10 0.0 1.0 0.01 #pragma parameter BARREL_DISTORTION_Y "Curvature - top/bottom" 0.15 0.0 1.0 0.01 #ifdef PARAMETER_UNIFORM uniform float BARREL_DISTORTION_X; uniform float BARREL_DISTORTION_Y; #else #define BARREL_DISTORTION_Y 0.10 #define BARREL_DISTORTION_Y 0.15 #endif /* COMPATIBILITY - GLSL compilers */ /* crt-barrel Copyright (C) 2015 davej This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifdef GL_ES #define COMPAT_PRECISION mediump #else #define COMPAT_PRECISION #endif uniform vec2 InputSize; uniform vec2 TextureSize; varying COMPAT_PRECISION vec2 screenScale; varying COMPAT_PRECISION vec2 TEX0; #if defined(VERTEX) uniform mediump mat4 MVPMatrix; attribute mediump vec4 VertexCoord; attribute mediump vec2 TexCoord; void main() { screenScale = TextureSize / InputSize; TEX0 = TexCoord; gl_Position = MVPMatrix * VertexCoord; } #elif defined(FRAGMENT) uniform sampler2D Texture; vec2 BARREL_DISTORTION = vec2(BARREL_DISTORTION_X, BARREL_DISTORTION_Y); // Barrel distortion shrinks the display area a bit, this will allow us to counteract that. vec2 barrelScale = 1.0 - (0.23 * BARREL_DISTORTION); vec2 Distort(vec2 coord) { coord *= screenScale; coord -= vec2(0.5); float rsq = coord.x * coord.x + coord.y * coord.y; coord += coord * (BARREL_DISTORTION * rsq); coord *= barrelScale; if (abs(coord.x) >= 0.5 || abs(coord.y) >= 0.5) coord = vec2(-1.0); // If out of bounds, return an invalid value. else { coord += vec2(0.5); coord /= screenScale; } return coord; } void main() { vec2 texcoord = Distort(TEX0); if (texcoord.x < 0.0) gl_FragColor = vec4(0.0); else { vec3 colour = texture2D(Texture, texcoord).rgb; gl_FragColor = vec4(colour,1.0); } } #endif
-
Normalement il n'y a pas besoin de bidouillé quoi que ce soit.
Tu sélectionne via le menu "options de jeux" et rien d'autre a faire.Sur la 7.1.1 version PC ou version pi P3b+, ca fonctionne directement, il n'y a que sous PI4 que ca déconne.
Les shaders décorne tellement sous pi4 que je suis revenu sur mon pi3B+, c'est triste…J'abandonne, je vais jouer sur les version PC ou sur PI3b+...
-
@Delegnia
Faut voir ça comme un soutien aux développeurs, signaler un problème est une chose, trouver comment y remédier apporte un plus c'est tout.
Oui la version RPI3 est bien plus fonctionnelle, la version Pi4 est bien plus récente, ça s'améliorera au fil des versions. -
@airdream Tout a fait, si je peux fournir quoi que ce soit, ce sera avec plaisir !
Je suis simplement triste car j'ai investit dans un pi 4 et ca ne m'apporte pas satisfaction.Merci aux devs pour leurs formidable travail et je me tiens a disposition pour toute demande de logs ou autres.
-
@Delegnia Salut, j'ai investie dans un Odroid XU4 Q, et je n'en suis pas satisfait non plus, résultat, je suis retourné sur mon B+
Bref, pour en revenir au Shader, j'ai retéléchargé le crt-pi sur internet, car celui dans Recalbox est l'ancienne version ! Le nouveau est moins flou, et il s'appel "crt-pi-curvature" -
@Tamtam Merci pour ces infos. j'imagine qu'il ne suffi pas d'un copier coller dans le répertoire shader pour les remplacer ? Aurais tu un lien avec une procédure ?
-
@Delegnia
tu peux utiliser les surcharges pour mettre n'importe quel shader absent de recalbox
J'avais ici expliquer comment faire avec le shader crt-nes-mini lorsque recalbox en était a la version 6 ( depuis la 7 il y a bien plus de shaders inclus) -
@airdream Merci pour ton retour.
Effectivement, je me souviens avoir vu cette procédureEn espérant que la prochaine version prendra en compte ces problématiques de shaders non fonctionnel, je vais rester sur la version PC et abandonner la version Raspberry PI pour le moment.
Encore merci a ceux qui mon fait un retour.
-
@Delegnia
C'est dommage de mettre le Pi4 de côté pour si peu.
Moi ce qui me gène plus avec le Pi4 c'est les reboot intempestifs qui se provoquent chez moi lorsque je sors d'une liste de jeux et reviens au choix des consoles. Ça le fait quand une vidéo du scrap était en lecture et que j'appuie sur le bouton "retour" , sûrement la mémoire RAM mal gérée au niveau du front-end.Si tu veux que je te prépare le dossier tout fait pour ton shader, envoi moi un lien ici même pour que je le télécharge, je te prépare la surcharge et te mettrai le lien pour le prendre ici même. T'auras rien a faire juste a le mettre au bon endroit que je te citerai
-
Bon je viens de tenter en prenant le crt-pi de ma version Pi3 (que j'ai testé prealablement sur Pi3, et il est bien incurvé).
Je l'ai adapté pour une surcharge afin de le mettre sur le Pi4, mais malheureusement sans resultat.
Il y a un truc qui m'échappe et je ne sais pas quoi. Une compatibilité différente quelque part mais ou?
Vraiment désolé, je pensais que par les surcharges ca allait enfin passer mais non, au grand désespoir.
Il faut chercher si l'auteur "davej" a fait une version Pi4, je vois plus que ça. -
J'ai reussi a trouver un rendu assez proche dit moi ce que t'en pense?
Si ca t'interesse d'essayer ca marche sup Pi4
regarde ces images en zoomant dessus- prendre zfast-crt-curve.glslp
- aller dans "parametre shaders" via retroarch
- changer la ligne "mask effect amount" pour y mettre la valeur 0.00 (voir image dessous ci après)
- retour arriere et mettre "enregister"
- choisir "enregistrer les prereglages de shaders sous"
- taper le nom que tu veux (exemple zfast-crt-curve-custom)
- c'est tout, il apparaitra ensuite dans ton menu recalbox comme un autre
-
en regardant bien c'est pas vraiment pareil que le crt-pi curve... Rhahhh je rage de pas y arriver
J'espere que je vais finir par trouver, je ferai d'autres tests si j'ai des idées