Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 04:33

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 2x 16bit float in 32bit float packen
BeitragVerfasst: Fr Aug 03, 2012 11:10 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Hallo,

wie der Titel bereits sagt, versuche ich eine Möglichkeit 2x 16bit Floats in einen 32Bit wert zu packen und diesesn im Shader wieder auseinander zu pflücken..

Ich schiebe via TBOs (RGBA32) werte in den GeometryShader (siehe Partikel Thread), da brauch ich nun noch ein paar mehr werte, wollte aber nicht noch einen Buffer binden.

Habt ihr da was für mich?

Grüße
Thomas


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Aug 03, 2012 17:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Möglichkeit 1:
Du benutzt RGBA16 und liest im Shader einfach zwei Zellen aus dem TBO statt eine. Wenn die Zellen nebeneinander liegen sollte der zweite Zugriff gecacht sein und entsprechend schnell.

Möglichkeit 2:
ShaderModell 4 unterstützt Bit-Operationen. Aber leider kann GLSL keinen brutalen Cast von Integer nach Float, die Daten werden immer interpretiert. (HLSL kann das AFAIK). Du musst also von Hand die Bits zerflücken um deinen Float zu rekonstruieren. Wenn du einen beschränkten Wertebereich hast (etwa 0...1) ist es vielleicht besser das als Integer darzustellen statt Float.
Code:
  1. uvec4 input = texelFetchBuffer(...);
  2. uvec4 lower = input & 0xFFFF;
  3. uvec4 higher = input >> 16;

Nun hast du die Float-Daten als Integer. Der Aufbau eines Half-Floats nach IEEE 754-2008 sieht so aus:
Bit 1: Vorzeichen
Bit 2-6: Exponent
Bit 7-16: Mantisse
Dank der vielen Spezialfälle (Subnormal numbers, Infinitiy, ...) will man das eigentlich nicht wirklich selbst in Software-Implementieren ;)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]