Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

1

27.05.2013, 03:27

Schwarz-Weiß Shader

Ich versuche einen schwarz-weiß-Shader zu programmieren. Ich hätte dafür einen Pixelshader genommen und ihn folgendermaßen aufgebaut:

HLSL-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sampler RT : register(s0);

float4 main_fp(
    float2 texCoord : TEXCOORD0
    ) : COLOR
{
    float3 sourceColor = tex2D(RT, texCoord).rgb;
    
        float temp = max(sourceColor[0],sourceColor[1]);
        float maxi = max(temp,sourceColor[2]);
        
        // Ich habe mir GEdanken gemacht, dass man das V von HSV oder das L von HSL nehmen könnte. Allerdings bin ich mir nicht sicher
         
        return float4(maxi,maxi,maxi,1.0f);
        //oder

        temp = min(sourceColor[0],sourceColor[1]);
        float mini = min(temp,sourceColor[2]);
          
        float res = (maxi+mini)/2;
        return float4(res,res,res,1.0f)
}


Meine Überlegung war, dass es nur einen Wert gibt. Da wenn alle Werte gleich sind die Farbe schwarz/weiß/grau ist denke ich man kann es so lösen.
Allerdings weiß ich nicht ob ich die relative Helligkeit oder den Hellwert der Farbe brauche.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

27.05.2013, 06:23

Also ich weiß nicht ob ich deine Frage falsch verstanden habe, aber für einen schwarz-weiß Bild machst du einfach für jeden Pixel folgendes:
Den durschnitt der r, g und b werte ermitteln, also wert=( (r+g+b) / 3) und dann den farbwert für den pixel auf (wert,wert,wert) setzen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

27.05.2013, 06:41

Das menschliche Auge nimmt alle 3 Kanäle unterschiedlich hell wahr, weshalb der Durchschnitt ein unerwartetes Ergebnis liefert und nicht die gefühlte Helligkeit widerspiegelt.
Daher gibt es verschiedene Formeln für Graustufen:
http://en.wikipedia.org/wiki/Grayscale#C…or_to_grayscale

Aus Wiki:
Y' = 0.299 R + 0.587 G + 0.114 B

Aus Wiki für HDTV:
Y' = 0.2126 R + 0.7152 G + 0.0722 B
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

27.05.2013, 13:09

Wobei auch hier beachtet werden sollte, Schwarz/Weiß und Graustufen ist im Prinzip nicht das selbe. Es wird zwar oft das eine gesagt und das andere gemeint, aber einen Unterschied gibt es ja. Möchtest du auf Graustufen hinaus? Da hat BC ja schon alles wichtige zu gesagt. Eigentliches Schwarz Weiß besteht aber wie es der Name schon sagt nur aus den zwei Werten für Schwarz und Weiß. Ist halt oft ein Problem der Definition.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

27.05.2013, 13:38

Da er "schwarz/weiß/grau" geschrieben hat, gehe ich mal von Graustufen aus ;) Aber Schorsch hat schon Recht, schwarz-weiß wären eben nur 2 Farben.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

6

27.05.2013, 17:58

Also ich meine jetzt einen Shader, mit dem man schwarz-weiß sieht.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

27.05.2013, 17:59

Ja und das heißt? Nur die zwei Farben schwarz und weiß oder auch Graustufen? Mensch, ich dachte die Frage sei klipp und klar gestellt worden.

Das hier ist Schwarz/Weiß:
http://www.monochrom.at/press/jpg/monos/…om-gruppe-1.jpg

Das hier ist Graustufen:
http://img.wallpaperstock.net:81/johnny-…9_2560x1600.jpg
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

27.05.2013, 18:03

Was du oben machst, bzw die anderen erklärt haben ist ein Bild in Graustufen umzurechnen. Dabei verwendet man verschiedene Grauabstufungen, aber keine anderen Farben. Bei Schwarz Weiß hat man zwei Farben. Eben schwarz und Weiß. Nichts dazwischen und nichts anderes. Jetzt musst du nur selbst wissen was du davon haben möchtest;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

9

28.05.2013, 06:10

Sorry, ich meinte Graustufen (Schwarz-weiß im Sinne von Schwarz-weiß Fernsehen)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

28.05.2013, 06:44

Nun, dazu steht alles schon in meiner Antwort.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige

Ähnliche Themen