Welcome to AEP Emulation Page - Emulation News
   
Hosting by: Uberspace.de   
Menu
· Home / News
· News Categories
· News Archiv
· Submit news

· My Account
· Search
· Forums
· Online Games
· Weblinks
· Game Reviews
· Translations
· Impressum

Downloads
 


Infos
· Museum
· Infocenter
· Das AEP Team
· Member Liste
· Top 25 Liste
· Glossar
· FAQ

Friends
· Emulation64
· 1Emulation.com
· Emu-France
· progetto-SNAPS


Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
JezzeOffline
Post subject: MAME Shader Konfiguration  PostPosted: Jun 29, 2012 - 05:13 PM
Banned Team Member


Joined: Oct 30, 2004
Posts: 5751



Highscores in 04/2020

Status: Offline
Vor einiger Zeit hatte ich ja bereits versucht einen Offscreen von Metal Slug mit den Möglichkeiten die mir der Shader von MAME bietet nachzuahmen; was mir - so denke ich - auch recht gut gelungen ist.



Sicherlich interessiert es den ein oder anderen welche Einstellungen ich vorgenommen habe oder gar wie man den Shader initial aktiviert. Bitte beachtet, dass einige Einstellungen nicht mit dem Standard post.fx Shader der mit MAME geliefert wird funktionieren. Weitere Informationen findet ihr ganz zum Schluss des Beitrages.


Shader aktivieren

Um den HLSL Shader von MAME nutzen zu können müsst ihr ihn zunächst in der mame.ini aktivieren. Dazu sucht ihr in der Datei nach DIRECT3D POST-PROCESSING OPTIONS und setzt folgende Einstellungen

Code:
hlsl_enable               1
hlslpath                  hlsl
hlsl_ini_read             1
hlsl_ini_write            0
hlslini                   hlsl.ini

hlsl_enable
0 deaktiviert den Shader
1 aktiviert den Shader

hlslpath
gibt den relativen Pfad zu dem Verzeichnis an, in dem der eigentlichen Shader Code liegt. Dieses Verzeichnis sollte folgende Dateien beinhalten, die MAME standardmäßig mitbringt:

bloom.fx
color.fx
deconverge.fx
focus.fx
phosphor.fx
pincushion.fx
post.fx
prescale.fx
primary.fx
yiq_decode.fx
yiq_encode.fx

hlslini (seit 0.149 fehlerhaft, mit 0.150 entfernt)
gibt den Namen der Datei an, in dem die Shader-Parameter gespeichert sind. Ihr könnt diesen Wert auch auf %g gesetzt lassen, wodurch die Shader-Parameter aus einer Datei die den Namen des ROM-Sets trägt geladen werden oder falls diese nicht vorhanden ist direkt aus der mame.ini. Eine hlsl.ini mit den Standard-Einstellungen aus der mame.ini könnt ihr hier herunterladen.

hlsl_ini_read (seit 0.149 fehlerhaft, mit 0.150 entfernt)
0 deaktiviert das Lesen aus der hlsl.ini
1 aktiviert das Lesen aus der hlsl.ini

hlsl_ini_write (seit 0.149 fehlerhaft, mit 0.150 entfernt)
0 deaktiviert das Schreiben in die hlsl.ini
1 aktiviert das Schreiben in die hlsl.ini


Wenn ihr das Spiel nun startet seht ihr im Grund keinen Unterschied zur normalen Darstellung, was natürlich daran liegt, dass bisher keinerlei Einstellungen in der hlsl.ini vorgenommen wurden.




Grundeinstellungen

Code:
hlsl_enable            1
hlsl_prescale_x        0
hlsl_prescale_y        0
hlsl_snap_width        1920
hlsl_snap_height       1280


hlsl_enable
hat die gleiche Auswirkung wie in der mame.ini und muss - auch wenn bereits in der mame.ini angegeben - erneut gesetzt werden.

hlsl_prescale_x/y
geben an um welchen Faktor, das Ausgangsbild skaliert werden sollen. Je niedriger der Skalierungsfaktor desto unschärfer ist das Bild. Eine Angabe von 0 berechnet den Skalierungsfaktor automatisch, so dass es zu keiner Unschärfe kommt. Dies kann bei schwächerer Hardware allerdings zu Lasten der Performance geht, weshalb eine konkrete Angabe des Skalierungsfaktors sinnvoll sein kann.

hlsl_snap_width/height
geben die Auflösung der mit Alt + 12 generieren Snapshots an.



Farbtransformation

Der Shader bietet umfangreiche Möglichkeiten den Farbraum des Ausgangsbildes zu transformieren. Folgende Einstellungen habe ich vorgenommen.

Code:
red_ratio              1.050000, 0.000000, 0.100000
grn_ratio             -0.100000, 1.000000, 0.250000
blu_ratio             -0.250000, 0.250000, 1.250000
offset                 0.025000, 0.025000, 0.025000
scale                  0.900000, 0.950000, 0.950000
power                  1.300000, 1.100000, 1.000000
floor                  0.000000, 0.000000, 0.000000


red/grn/blu_ratio
definieren eine 3×3 Matrix, die mit dem RGB-Signal multipliziert wird. Im Grund lässt sich damit der RGB-Farbraum beliebig transformieren. Einfacher gesagt kann damit bestimmt werden, wie stark ein Farbkanal auf einen anderen Farbkanal Einfluss hat. Im Bsp. des Grün-Kanals (-0.100000, 1.000000, 0.250000) wird dieser um 10% (-0.100000) durch den Wert des Rot-Kanals abgeschwächt und um 25% (0.250000) durch den Wert des Blau-Kanals verstärkt.

offset
erhöht bzw. verringert den jeweiligen Farbwert eines Kanals.
Bsp. Rot-Signal = 0.5, Rot-Offset = 0.1, Rot = 0.6

scale
skaliert den jeweiligen Farbwert eines Kanals.
Bsp. Rot-Signal = 0.5, Rot-Scale = 1.1, Rot = 0.55

power
potenziert den jeweiligen Farbwert eines Kanals.
Bsp. Rot-Signal = 0.5, Rot-Power = 2, Rot = 0.25

floor
gibt den minimalen Farbwert eines Kanals an.
Bsp. Rot-Signal = 0.0, Rot-Floor = 0.1, Rot = 0.1


Wenn ihr die Einstellungen wie oben angegeben verwendet sieht das Spiel nun folgendermaßen aus.




Sättigung, Kontrast, Helligkeit und Gamma

Code:
saturation             1.150000
brightness             0.950000 ;kein Shader Parameter
contrast               1.250000 ;kein Shader Parameter
gamma                  0.900000 ;kein Shader Parameter


Da das obige Bild noch sehr blass und Kontrastarm wirkt, werden nun Sättigung, Kontrast, Helligkeit und Gamma angepasst. Bis auf die Sättigung sind dies jedoch keine Parameter des Shaders und müssen in der mame.ini angegeben werden.




Unschärfe und Farbverlauf

Code:
defocus                0.500000, 0.500000
converge_x             0.000000, 0.000000, 1.000000
converge_y             0.500000, 0.000000, 0.000000
phosphor_life          0.500000, 0.500000, 0.500000


defocus
gibt (in Pixel) an wie unscharf das Bild in X und Y-Richtung gemacht werden soll.

converge_x/y
geben (in Pixel) an wie sehr der jeweilige Farbkanal in X und Y-Richtung verschoben werden soll

phosphor_life
gibt an wie Lange der jeweilige Farbwert eines Kanals bestehen bleibt.
0 bedeutet, der Farbwert wird sofort überschrieben
1 bedeutet, der Farbwert bleibt bestehen und wird nur durch einen höheren Farbwert überschrieben


Diese Einstellungen geben dem Bild eine Art "schlechter Qualität" des RGB-Signals.




Maske

Code:
shadow_mask_alpha      0.100000
shadow_mask_texture    crt_slot_mask.png
shadow_mask_x_count    -2
shadow_mask_y_count    -2
shadow_mask_usize      0.375000
shadow_mask_vsize      0.375000


shadow_mask_alpha
gibt die Intensität der Maske an.

shadow_mask_texture
gibt den Namen der Textur, die als Maske verwendet werden soll, an. Diese Datei muss im Unterverzeichnis artwork liegen.

shadow_mask_u/vsize
gibt an wie viel Prozent der Textur-Maske in X und Y-Richtung (genauer gesagt in UV-Koordinaten) einem (oder auch mehreren) Pixel des simulierten Bildschirms entspricht. Hierbei muss man beachten, dass die Berechnung der UV-Koordinaten auf Basis von Texturen mit einer Auflösung von power-of-two geschieht. Verwendet man also eine Textur die keine Auflösung von power-of-two besitzt, so wird diese bis zur nächst höheren Auflösung erweitert.



Bsw.
Auflösung = 48×48, power-of-two Auflösung = 64×64, UV-Size = 0.375×0.375, UV-Pixel = 24×24, d.h. 24×24 Pixel der 48×48 großen Textur werden für die Darstellung von 2×2 Pixel verwendet.

Wie sich an der dreifach vergrößerten Texture erkennen lässt, können wir 1x1 Pixel (durchgezogene Markierung) der Texture nicht kacheln um die Slot Mask abzubilden, da die Pixel jeder zweiter Spalte versetzt sind, weshalb 2×2 Pixel (gepunktet Markierung) verwendet werden

shadow_mask_x/y_count
gibt an wie oft die Maske in X und Y-Richtung gekachelt werden soll. Diese Angabe kann allerdings schnell sehr Nerv-tötend werden, wenn man nur eine hlsl.ini verwenden möchte und für jedes Spiel oder eher jedes System die Auflösung anpassen muss. Aus diesem Grund habe ich den post.fx Shader so angepasst, dass die entsprechende Auflösung automatisch gesetzt wird. Durch die Angabe von negativen Werten wird nun automatisch die Auflösung des Spiels oder ein Bruchteil dieser als Mask-Count verwendet.

Bsp.
Auflösung = 320×240, Count = -1, Kachel-Anzahl = 320×240 (Maske beschreibt 1×1 Pixel)
Auflösung = 320×240, Count = -2, Kachel-Anzahl = 160×120 (Maske beschreibt 2×2 Pixel)


Nach diesen Einstellungen sieht das Ergebnis folgendermaßen aus.




Scan-Lines

Code:
scanline_alpha         0.250000
scanline_size          1.000000
scanline_height        1.500000
scanline_bright_scale  1.000000
scanline_bright_offset 0.000000
scanline_jitter        0.000000


scanline_alpha
gibt die Intensität der Scanlines an.

scanline_size
gibt die Anzahl der Scanline an
1 bedeutet, die Anzahl der Scan-Lines entspricht der vertikalen Auflösung
2 bedeutet, die Anzahl der Scan-Lines entspricht dem doppelten der vertikalen Auflösung

scanline_height
gibt den Abstand zw. zwei Scan-Lines und somit die Höhe einer Scan-Lines an
0 bedeutet der Abstand zw. zwei Scan-Lines ist minimal und kaum zusehen
2 bedeutet der Abstand (1/2) zw. zwei Scan-Lines entspricht der Höhe (1/2) einer Scan-Lines
4 bedeutet der Abstand (3/4) zw. zwei Scan-Lines entspricht dem dreifachen der Höhe (1/4) einer Scan-Line

scanline_bright_scale
gibt die Helligkeit der Scan-Line an

scanline_bright_offset
hat keinerlei Auswirkungen und wir im Shader nicht verwendet

scanline_jitter
simuliert das wahrgenommene Flackern der Scan-Lines, das beim Zeilensprungverfahren auftritt


Mit diesen Einstellungen erhaltet ihr folgendes Ergebnis.




Krümmung

Code:
pincushion             0.300000


pincushion
gibt den Grad Wölbung des Bildschirms an

Den Grad der Wölbung habe ich im post.fx Shader auf ein Viertel reduziert, um eine übertriebene Angabe auszuschließen, die eher an Fish-Lens als an eine normale Bildschirmkrümmung erinnert. Zudem werden die Ecken des Bildschirmes nun abgerundet, wie es bei vielen alten CRT-Monitoren und vor allem bei Fernsehern der Fall war.





Vignettierung und Reflexion

Code:
curvature              0.150000


curvature
dieser Wert hat im ursprünglichen post.fx Shader keinerlei Auswirkung und wird nicht verwendet

Ich verwendet diesen Wert zum Simulieren von Vignettierung und Reflexion. Folgende Bilder zweigen was dabei geschieht.


graues Signal


graues Signal mit Vignettierung


graues Signal mit Reflexion


graues Signal mit Vignettierung und Reflexion


Das endgültige Ergebnis sieht nun folgendermaßen aus.




Download

post.fx Filter

Damit ihr die vereinfachte Konfiguration der CRT Masken, sowie die Effekte für Vignettierung und Reflexion nutzen könnt, benötigt ihr diese modifizierte post.fx Datei mit der ihr die vorhandene überschreibt.


Color Adjustment Settings

In dieser hlsl.ini sind lediglich die Farbeinstellungen vorgenommen wurden.


Slot Mask Settings

Diese hlsl.ini soll einen CRT-Monitor mit Slot Mask simulieren, inklusive der gezeigten Farbeinstellungen sowie der vorgestellten Vignettierung und Reflexion.

Zusätzlich benötigt ihr noch diese Texture.




Aperture Grille Settings

Diese hlsl.ini soll einen CRT-Monitor mit Aperture Grille simulieren, inklusive der gezeigten Farbeinstellungen sowie der vorgestellten Vignettierung und Reflexion.

Zusätzlich benötigt ihr noch diese Texture.




Shadow Mask Settings

Diese hlsl.ini soll einen CRT-Monitor mit Shadow Mask simulieren, inklusive der gezeigten Farbeinstellungen sowie der vorgestellten Vignettierung und Reflexion.

Zusätzlich benötigt ihr noch diese Texture.




Edit:

Um der Verwirrung zw. curvature (ungenutzt) und pincushion für die Bildschirmkrümmung (engl. screen curvature) im original HLSL Shader vorzubeugen, habe ich die beiden Werte in meiner Modifikation vertauscht. So dass nun curvature für die Bildschirmkrümmung und pincushion für die Vignettierung verantwortlich ist.

_________________
Test your limits and break through! 


Last edited by Jezze on Feb 03, 2014 - 12:09 AM; edited 2 times in total 
 
 View user's profile Visit poster's website ICQ Number 
Reply with quote Back to top
MasterPhWOffline
Post subject: MAME Shader Konfiguration  PostPosted: Jun 29, 2012 - 06:25 PM
News Scout


Joined: Jul 06, 2004
Posts: 1919

Location: W-Live

Highscores in 04/2020

Status: Offline
Wird zwar höchstwahrscheinlich nix, was ich machen werde, weil es mit viel zu viel Anpassung und viel zu wenig Nutzen und wenn dann meist nur für ein Spiel verbunden ist, aber allein schon Danke für die Arbeit und dafür natürlich +1 beim Renomee System (mit ich das wenigstens dann und wann mal nutze. ;D).

_________________
Willst du mehr von, über oder mit mir lesen, besuche mich auf


 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
JezzeOffline
Post subject:   PostPosted: Jun 29, 2012 - 06:40 PM
Banned Team Member


Joined: Oct 30, 2004
Posts: 5751



Highscores in 04/2020

Status: Offline
Welche aufwendigen Anpassungen hast du denn vor? Die Settings, die ich verlinkt habe, lassen sich eigentlich für jedes Spiel ohne Änderungen verwenden.

_________________
Test your limits and break through! 
 
 
 View user's profile Visit poster's website ICQ Number 
Reply with quote Back to top
Rommaster
Post subject:   PostPosted: Jun 29, 2012 - 06:46 PM
Retromeister


Joined: Apr 13, 2006
Posts: 1299



Highscores in 04/2020

OPTIMAL !

Danke Jezze, +1 auch von mir. Wink
 
 
 
 View user's profile ICQ Number 
Reply with quote Back to top
MasterPhWOffline
Post subject:   PostPosted: Jun 29, 2012 - 06:50 PM
News Scout


Joined: Jul 06, 2004
Posts: 1919

Location: W-Live

Highscores in 04/2020

Status: Offline
Jezze wrote:
Welche aufwendigen Anpassungen hast du denn vor? Die Settings, die ich verlinkt habe, lassen sich eigentlich für jedes Spiel ohne Änderungen verwenden.

Nein, ich habe keine aufwendigen Anpassungen vor, diese Anpassungen wären mir für jedes Spiel zu aufwendig, sorum wird nen Schuh draus. ;D
Miss(t)Verständnis quasi.
Und auch wenn sie bei MS klasse aussehen, heißt das nicht, dass bspw. Street Fighter davon profitieren würde. Daher lass ich es wohl eher Standardmäßig. Bin aber eh nicht so der MAME Bastler. Wenn ich die Zeit hätte, weiß ich ja, könnte man viel mehr aus MAME rausholen. Ich nutze nur kaum was davon um ehrlich zu sein.

_________________
Willst du mehr von, über oder mit mir lesen, besuche mich auf


 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
FreneticGeekOffline
14 Post subject:   PostPosted: Jul 10, 2012 - 09:43 PM
Retrohling


Joined: Jul 10, 2012
Posts: 2



Highscores in 04/2020

Status: Offline
reife Leistung, Klasse! Vielen Dank.
 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
NorQueOffline
Post subject:   PostPosted: Jul 11, 2012 - 11:02 PM
Retromeister


Joined: Jul 18, 2004
Posts: 868



Highscores in 04/2020

Status: Offline
Was für einen Monitor hast du eigentlich, der eine 1920x1440er Auflösung darstellen kann? Das höchste was ich finden kann hat bei 1920 Pixeln horizontaler Auflösung 1200 Pixel vertikal, alles andere scheint nur in Notebooks verbaut worden zu sein und ist mir zu klein. Kannst du mal ein Beispiel mit 1200 Pixeln vertikaler Auflösung posten?
 
 
 
 View user's profile  
Reply with quote Back to top
JezzeOffline
Post subject:   PostPosted: Jul 12, 2012 - 09:41 AM
Banned Team Member


Joined: Oct 30, 2004
Posts: 5751



Highscores in 04/2020

Status: Offline
Mein Monitor unterstützt auch keine Auflösung von 1920x1440. Diese Auslösung wird wie beschrieben nur für die Erstellung der Screenshots (Alt + 12) verwendet und wurde gewählt um den kleinen Ausschnitt des Bildes mit Marco möglichst groß und detailliert zu haben.

Das Ergebnis mit einer vertikalen Auflösung von 1200 würde in etwa genau so aussehen, als würdest du die aktuellen Screenshots bilinear herunter skalierst.

_________________
Test your limits and break through! 
 
 
 View user's profile Visit poster's website ICQ Number 
Reply with quote Back to top
cmosesOffline
Post subject:   PostPosted: Jun 12, 2013 - 07:02 PM
Retrohling


Joined: Jun 12, 2013
Posts: 9



Highscores in 04/2020

Status: Offline
From United States so I use Google Translate to view the page. I really love the settings, I think they look great. I just downloaded MAME 149 transferred them over but they do not work. I just get a blank screen.

I think it is the post.fx file that might be the issue. Any chance you are thinking about updating? Also 149 has some new HLSL settings.

Thanks
 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
JezzeOffline
Post subject:   PostPosted: Jun 13, 2013 - 09:48 AM
Banned Team Member


Joined: Oct 30, 2004
Posts: 5751



Highscores in 04/2020

Status: Offline
Yeah, the shaders were changed with 0.148u5, so my modifications and settings aren't compatible anymore. I'll take a look at the new shader structure and if the changes are not too extensive, I can provide an update shortly.

One of the changes is the support for monitor-glow, as you may already know.


_________________
Test your limits and break through! 
 
 
 View user's profile Visit poster's website ICQ Number 
Reply with quote Back to top
cmosesOffline
Post subject:   PostPosted: Jun 13, 2013 - 03:05 PM
Retrohling


Joined: Jun 12, 2013
Posts: 9



Highscores in 04/2020

Status: Offline
Jezze wrote:
Yeah, the shaders were changed with 0.148u5, so my modifications and settings aren't compatible anymore. I'll take a look at the new shader structure and if the changes are not too extensive, I can provide an update shortly.

One of the changes is the support for monitor-glow, as you may already know.


Yes I like what they have added to HLSL. I think the monitor glow looks best in vector games. I think it still needs tweaking in raster based games. I wasn't really impressed with the default HLSL settings. I have incorporated all of your settings into 149 and they all still work fine. Hopefully the post.fx can be easily changed. The one tweak I have made to your amazing settings is the offset setting in mame.ini. I saw some information in another post about improving the black levels. I currently use

offset -0.04,-0.04,-0.04

which darkens the overall picture just a touch but I think improves on the look. Let me know what you think.

Thanks for your reply. Good luck with the post.fx.
 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
JezzeOffline
Post subject:   PostPosted: Jun 13, 2013 - 09:08 PM
Banned Team Member


Joined: Oct 30, 2004
Posts: 5751



Highscores in 04/2020

Status: Offline
I've updated my modified post.fx shader file to work with MAME 0.149.

By the way, could you adjust the shader via a separate hlsl.ini file? If I use a separate file, I just get a black screen. So I must change the settings in the mame.ini, witch is not that great. Confused

_________________
Test your limits and break through! 
 
 
 View user's profile Visit poster's website ICQ Number 
Reply with quote Back to top
cmosesOffline
Post subject:   PostPosted: Jun 13, 2013 - 11:56 PM
Retrohling


Joined: Jun 12, 2013
Posts: 9



Highscores in 04/2020

Status: Offline
Jezze wrote:
I've updated my modified post.fx shader file to work with MAME 0.149.

By the way, could you adjust the shader via a separate hlsl.ini file? If I use a separate file, I just get a black screen. So I must change the settings in the mame.ini, witch is not that great. Confused


I tried the post.fx and it is working now with 149. I do get a strange moire pattern in the background now that I was not getting on 148. I changed the offset settings back to your original ones and it was still there.

I wasn't sure what you meant by "could you adjust the shader via a seperate hlsl.ini file?". I am not sure how to adjust the shader through a seperate hlsl.ini file. Could you explain this process? Would that be be what is causing the moire pattern? Are you using a new mame.ini can you post it?

Thanks
 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
JezzeOffline
Post subject:   PostPosted: Jun 14, 2013 - 08:37 PM
Banned Team Member


Joined: Oct 30, 2004
Posts: 5751



Highscores in 04/2020

Status: Offline
Quote:
I do get a strange moire pattern in the background now [...]
Ups, I've made ​​a small mistake with my adjustments for MAME. 0.149. The size of the shadow mask wasn't calculated correctly. Please download the post.fx file again.


What I meant with "seperate hlsl.ini file" is, that you can specify a separate file containing all the shader settings.

mame.ini
Code:
hlsl_ini_read             1
hlslini                   hlsl.ini

This file must be in the hlsl directory of MAME. So you can easily switch between completely different settings by changing the file name. Unfortunately, it gives me a black screen in version 0.149.

_________________
Test your limits and break through! 
 
 
 View user's profile Visit poster's website ICQ Number 
Reply with quote Back to top
cmosesOffline
Post subject:   PostPosted: Jun 16, 2013 - 11:03 PM
Retrohling


Joined: Jun 12, 2013
Posts: 9



Highscores in 04/2020

Status: Offline
The new post.fx is working great and looks just like it did in 148, no more moire pattern. Thanks.

I figured out what you meant by the HLSL.ini file. You are right it only gives you a black screen when you try to use it.

Have you played around with the raster_bloom setting? I like he vector_bloom, I think it makes the vector games look better. Not sure about the raster one. It may need some tweaking.
 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT + 1 Hour
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © The PNphpBB Group
Credits
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 1998 - 2018 AEP Emulation Page.
You can syndicate our news via RSS using the file rss_en.xml for English headlines and rss_de.xml for German headlines.