Shaders manquant 7.1.1
-
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