![]() |
RGB to Float3
Wie kann ich RGB Werte nach float3 umrechnen?
Denke mal das RGB(255,255,255) := Float3(1.0, 1.0, 1.0) entspricht. Nur wie berechne ich das finde außer in C++ keine infos darüber.
Delphi-Quellcode:
List.Add('Redwood' + ',' + '171, 78, 82');
Diese 3 Werte möchte ich dann als float3 übergeben. gruss |
AW: RGB to Float3
Mit Prozentrechnung ;)
255/255 (= 100%) = 1.0 |
AW: RGB to Float3
Zitat:
Versteh das jetzt nicht! :oops: gruss |
AW: RGB to Float3
RGB(171,78,82) => Float3( 171/255, 78/255, 82/255 )
|
AW: RGB to Float3
Zitat:
Goggle hat mir da keine Ergebnisse geliefert. Vielleicht war meine Frage etwas unzulänglich. Danke! gruss |
AW: RGB to Float3
axo :) aber das wäre doch lediglich ein record mit ein paar class operatoren.
Direkt gesehen habe ich das noch nicht, sollte aber fix gebaut sein ... |
AW: RGB to Float3
Irgendwie will der kram wieder nicht.
Double sollte eigentlich einen wert 0.111111 liefern können fr := StrToInt(tmpStr[1]) / 255; fr := 0; Scheint so das ich heute was an der Klatsche habe ;) List.Add('Raw umber' + ',' + '146, 102, 68'); sollte dem wert float3(1.30, 1.02, 0.68) entsprechen da komme ich aber mit Extended(Double) nicht dran. Mit meinem Rechner 146/255 := 0.5725490196 Komme nicht auf den wert 1.30 EDIT: Hmmm Denke das geht nicht so einfach
Code:
Da spielen andere Faktoren noch eine rolle.
float4 SepiaPass( float4 colorInput, float2 tex )
{ float4 sepia = colorInput; // Calculating amounts of input, grey and sepia colors to blend and combine float grey = dot(sepia.rgb, float4(0.3, 0.59, 0.11, 0)); sepia.rgb = float4(sepia.rgb * ColorTone , 1); float4 grey2 = grey * (GreyPower); float4 color2 = colorInput / (GreyPower + 1); float4 blend2 = grey2 + color2; sepia.rgb = lerp(blend2, sepia.rgb, SepiaPower); // returning the final color return sepia; } Hardcoden ist schlecht möchte ich eigentlich nicht so gerne. gruss |
AW: RGB to Float3
Ist ja irgendwie auch logisch, denn bei der Berechnung
Code:
gilt
y = x / 255
Code:
Somit passt irgendwas mit der Berechnung nicht und auch die Annahme
x < 255 => y < 1
x = 255 => y = 1 x > 255 => y > 1
Code:
muss somit falsch sein
RGB(255,255,255) = Float3(1.0,1.0,1.0)
bzw. die implizierte Herleitung, dass
Code:
RGB(0,0,0) = Float3(0.0,0.0,0.0)
|
AW: RGB to Float3
Zitat:
Da wird zunächst der Helligkeitswert der Farbe bestimmt.
Delphi-Quellcode:
Das musst du aber hardcoden, denn dass entspricht den (von unseren Augen) wahrgenommenen Helligkeitswerten der Farben.
Rot 30%
Grün 59% Blau 11% |
AW: RGB to Float3
Zitat:
verwendeten Farben (Die bekannt sind) Wiki(Shades of brown) direkt in meinem Array ablege. Und das wollte ich vermeiden ;) über die korrekte berechnung. gruss |
AW: RGB to Float3
Einfach mal nach "Sepia" suchen hier im Forum.
Da z.B. eine kleine Prozedur die ganz gute Ergebnisse liefert: ![]() |
AW: RGB to Float3
Zitat:
Die Shader version die ich verwende so habe ich das zumindest festgestellt berechnet zur Laufzeit Sepia selbst. Ich mußte nichts anderes tun als meine RGB Werte als float zu übergeben. Also alle werte durch 100 teilen das war es schon ;) Somit kann ich diese auch direkt Hartcoden ohne mir da einen Kopf zu machen.
Delphi-Quellcode:
Ein wenig parsen aber das ist ja kein problem.List.Add('Wheat' + ',' + '245, 222, 179' + ',' + '#define ColorTone float3(2.45, 2.22, 1.79)'); Falls ich es dann doch mal brauche komme ich darauf zurück, gut zu wissen :) gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz