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

Aktuelle Zeit: Do Mär 28, 2024 13:19

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Feb 26, 2015 15:01 
Offline
DGL Member

Registriert: Mi Jul 14, 2010 13:53
Beiträge: 6
Hallo,

beim Ausprobieren einer uv-lookup-Textur erscheint ein von mir unerwarteter Noise-Effekt.

im Fragmentshader hole ich mir die Farbe der uvTextur:
vec4 uvColor = texture( uvTexture, UV ).rgba;

und verwende den rot/grün Kanal als uvKoordinaten für die eigentlich Textur:
vec4 colTexture = texture( sourceTexture, uvColor.rg ).rgba;

alle Texturen sind 512x512 und unkomprimiert, ich befinde mich im 2D Raum.
Habt ihr Ideen woher die Störungen kommen?


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 26, 2015 17:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich hab zwar grad keine Idee warum dieser Effekt zustande kommt, aber warum übergibts du die Textur-Koordinaten nicht normal mit den Vertex-Daten. Das über eine extra Textur zu lösen ist eher untypisch und auch langsamer, da du ja immer 2 Textur-Lookups machen musst.

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 26, 2015 17:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
In welchem Format ist deine Lookup-Textur gespeichert?

Welche Präzision nutzt dein Shader?

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 26, 2015 19:42 
Offline
DGL Member

Registriert: Mi Jul 14, 2010 13:53
Beiträge: 6
Danke für die Mühen!

Diesen untypischen Weg habe ich gewählt, weil ich die lookup-Textur offscreen rendern möchte um so sehr flexible Texturen in Echtzeit mappen zu können.

Die Lookup-Textur erstelle ich mit GL_RGBA, GL_UNSIGNED_BYTE. Gespeichert ist sie als png mit 0 Kompression.

Zur Shader Präzision habe ich nur etwas im Zusammenhang mit OpenGL ES 2.0 gefunden. Ich programmiere mit dem normalen OpenGL, glsl #version 330 core

Huch, beim Stichwort Präzision fällt mir gerade ein, dass die Farbwerte ja nur von 0-255 gespeichert werden. Da funktioniert eine uv-lookup-textur eh nur bei kleinen Bildern... ups. Spontan fällt mir ein, je uv-Achse zwei Kanäle zu nehmen? mit rgba hätte ich ja vier zur Verfügung.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 26, 2015 21:55 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Warum nicht einfach eine 16 Bit Textur?

Genau die Idee mit einer zusätzlichen Weiterleitungstextur habe ich auch schon mal gehabt, allerdings wieder verworfen, weil man eigentlich tatsächlich sehr wenig gewinnt. Es ist kaum aufwendiger die Werte direkt zu updaten.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Feb 27, 2015 14:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Üblicherweise nennt sich das Sparse Texture.
Zu deinem Problem, du solltest mal gucken, dass du bei beiden Texturen das Texturfiltern auf linear, trilinear stellst.
Ich vermute, dass es aktuell wie folgt eingestellt ist.
Code:
  1. gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_NEAREST);
  2. gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_NEAREST);

Zumindestens kann bei dieser Einstellung solch ein streu Effekt auftreten.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mär 03, 2015 22:34 
Offline
DGL Member

Registriert: Mi Jul 14, 2010 13:53
Beiträge: 6
Stimmt Opengler, werde die höhere Genauigkeit pro Kanal meiner spontanen Idee mit den zwei Kanälen je Achse klar vorziehen. Für 3D ist die Methode wohl nicht sehr gefragt, aber für nette 2D Effekte finde ich sie Klasse.

Die Texturfilter sind auf Linear. Aber stimmt, Nearest würde wohl ähnliche Fehler produzieren.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 28 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.066s | 15 Queries | GZIP : On ]