<p>troika-3d-text Renderproblem ohne Fehler</p>

Erstellt am 6. Nov. 2019  ·  43Kommentare  ·  Quelle: protectwise/troika

habe dies mit der aframe-komponente getestet und direkt troika build and example on

https://troika-examples.netlify.com/#text

Bildschirmfoto von 2019-11-06 21-33-50
Bildschirmfoto von 2019-11-06 21-33-34

Alle 43 Kommentare

Google Chrome | 78.0.3904.87 (Offizieller Build) (64-Bit)
Linux
JavaScript | V8 7.8.279.19

VENDOR = 0x1002 [X.Org], DEVICE= 0x67ef [AMD Radeon (TM) RX 460 Graphics (POLARIS11, DRM 3.33.0, 5.3.7-301.fc31.x86_64, LLVM 9.0.0)] AKTIV

Ich erinnere mich, wenn ich das zum ersten Mal gefunden habe, funktioniert es

Also versuche ich eine ältere Version! und ja, es funktioniert mit e600d2cd v0.12.0
Bildschirmfoto von 2019-11-06 22-00-02

ok letzte funktionierende Version ist
f4fcbb8d v0.12.1

v0.13.0 unterbricht das Rendern

Huch! Vielen Dank, dass Sie dies gemeldet und die genaue Version eingegrenzt haben, in der es kaputt gegangen ist. Ich werde diese Commits auf alles Offensichtliche durchsuchen, aber ich befürchte, dass ich einen Fix nicht verifizieren kann, wenn er spezifisch für Ihre Linux-Distribution oder GPU-Treiber ist.

Ich versuche, eine Ahnung zu haben ... Sehen Sie in Ihrem Browser die fliegenden Spaghetti hier? https://troika-examples.netlify.com/#bezier3d

ja das sieht gut aus

Bildschirmfoto von 2019-11-07 11-58-41

habe ein kleines Video des Problems gemacht, sieht so aus, als wenn das Rendere nur SDF (kleine Größe) verwendet, funktioniert es

Auf Oculus Go funktioniert es einwandfrei

ezgif com-video-to-gif

Verdammt, das hat meine Ahnung erschüttert.

Das Video ist faszinierend. Ich kann mir ein paar Gründe vorstellen, warum das Verhalten auftreten könnte, aber diese sollten auch in 0.12.1 fehlgeschlagen sein. Werde weiter suchen...

Um sicherzustellen, dass wir nicht im Laufe der Zeit mit mehreren verschiedenen Problemen zu tun haben, könnten Sie überprüfen, ob die folgenden Builds alle auf die gleiche Weise fehlschlagen?

ja alle scheitern mit dem gleichen

Nun, im Moment bin ich über dieses hier ratlos. Beim Durchlaufen des https://github.com/protectwise/troika/compare/v0.12.1...v0.13.0 diff sehe ich keinen Unterschied, der dieses Verhalten verursachen sollte. Die einzige Änderung dort, die sich auf das Text-Rendering auswirken sollte, ist der Wechsel zur createDerivedShader -Abstraktion für die Shader-Manipulation. Ich habe die Shader-Ausgabe dieser beiden Versionen Zeile für Zeile verglichen und es gibt keinen Unterschied in der eingefügten Logik, den ich sehen kann, nur geringfügige Unterschiede darin, wo sie auftritt (z. B. innerhalb einer glsl-Funktion und nicht in void main oder in etwas anderer Reihenfolge .) Ich verstehe nicht, warum das dieses Problem verursachen würde, aber ich nehme an, es ist möglich, dass es einen Fehler/eine Eigenart in diesem bestimmten OpenGL-Treiber gibt, den es auslösen kann.

Ich bin mir nicht sicher, wohin ich von hier aus gehen soll, außer einige Änderungen auf der Grundlage von Vermutungen auszuprobieren und sie testen zu lassen. Dies nicht ohne weiteres reproduzieren zu können, ist ein Schmerz.

OK, ich verstehe, und ja, ich denke auch, dass dies eher ein Problem mit dem OpenGL-Treiber ist: / Eine Erkenntnis ist, wenn ich skaliere, sehe ich das Schriftvideo ->
ezgif com-video-to-gif (1)

als Referenz hier die OpenGL-Versionen
GL_VENDOR X.Org GL_RENDERER AMD Radeon (TM) RX 460 Graphics (POLARIS11, DRM 3.33.0, 5.3.8-300.fc31.x86_64, LLVM 9.0.0) GL_VERSION 4.5 (Kernprofil) Mesa 19.2.2

LOL, das ist ein netter Effekt! 🤣

eine idee was ich testen könnte?

@lojjic wuha! Ich habe etwas Interessantes gefunden, wenn ich der Szene einen Nebel hinzufüge, funktioniert es!

Bildschirmfoto von 2019-11-11 11-54-36

mit hinzugefügtem Aframe-Nebel mit sceneEl.setAttribute("fog", "type: linear; far:300;color: 0xefd1b5");

Neugieriger und neugieriger. Funktioniert dann auch die Checkbox "Fog" auf der Troika-Beispielseite?

hmm nein das ändert nichts

ha ja, es funktioniert, wenn ich MeshBasicMaterial einstelle und den Nebel auswähle!

OK, danke, das gibt mir vielleicht einen Anhaltspunkt, um weiter nachzuforschen.

Ich werde versuchen, später heute etwas Zeit zu finden, um einen Zweig mit einigen Versuchen an isolierten Änderungen voranzutreiben, und sehen, ob irgendetwas davon hilft.

OK, hier ist der erste Versuch – lassen Sie mich wissen, ob es keine Änderung gibt, eine Änderung, die aber immer noch fehlerhaft oder behoben ist: https://5dc9dc90ab55b5000a1db32c--troika-examples.netlify.com/#text

sieht nach einer sehr guten Aufnahme aus! :>

Bildschirmfoto von 2019-11-11 23-40-48

Die normale Nutzung mit MeshStandard und MeshBasic Material sieht für mich behoben aus

nur mit Custom Shader Material ist fehlerhaft
Bildschirmfoto von 2019-11-11 23-42-22

Das ist großartig! Wir kommen irgendwo hin.

Können Sie dies jetzt bitte versuchen: https://5dc9e7dcea3f6e00084d01a6--troika-examples.netlify.com/#text
Ich versuche, eine von zwei möglichen Ursachen mit dieser zu isolieren.

ok, das funktioniert nur korrekt mit MeshBasicMaterial und Fog aktiviert

Es ist also eine seltsame Eigenart mit der Reihenfolge der Hinrichtung. Der einzige Unterschied zwischen diesen letzten beiden Tests bestand darin, dass eine Identitätszuweisung ( gl_FragColor = functionThatReturnsArg(gl_FragColor); ) entweder nach oder vor der benutzerdefinierten Text-Shader-Logik stattfand. Wenn es danach kommt, funktioniert es, und wenn es davor kommt, schlägt es fehl (es sei denn, der Nebel ist aktiviert, der ein zusätzliches gl_FragColor.rgb = ... vor der Textlogik hinzufügt, und das funktioniert auch, aber nur in MeshBasicMaterial. seufz .

Hier ist ein böser Hack, nur um zu sehen, ob das Hinzufügen von gl_FragColor = gl_FragColor; am Ende einen Kick gibt: https://5dc9f0d8e82cdf00089f6b6c--troika-examples.netlify.com/#text

ok das gleiche mit dem letzten funktioniert nur mit BasicMaterial und Fog on ...

OK, noch ein paar Versuche für dich ...

1) https://5dcadbdfa8565d0008ff1af5--troika-examples.netlify.com/#text
2) https://5dcadfaac107620008043289--troika-examples.netlify.com/#text
3) https://5dcae02c8de52400077b3a8b--troika-examples.netlify.com/#text

alle drei funktionieren nur mit aktiviertem BasicMaterial und Fog

Pfui. Danke, dass Sie so geduldig waren, all meine wilden Vermutungen zu testen. Das ergibt für mich noch keinen Sinn.

Testen einer weiteren Hypothese: https://5dcaea1c9bbf6e00074b3c7a--troika-examples.netlify.com/#text

np, das bricht immer mit Nebel an und allen Materialien ab

Könnten Sie bitte noch ein paar Screenshots von anderen Beispielen für mich machen, wenn Sie einen Moment Zeit haben:

1) https://troika-examples.netlify.com/#arcs mit ausgewähltem Shader „Double-Derived“.
2) https://troika-examples.netlify.com/#ui
3) https://troika-examples.netlify.com/#bezier3d mit einem Wert ungleich Null für die „gestrichelte“ Option

Diese Beispiele verwenden ähnliche Techniken wie der Textfragment-Shader, daher möchte ich sehen, ob es Gemeinsamkeiten in ihrem Verhalten gibt.

Bildschirmfoto von 2019-11-13 14-49-48
Bildschirmfoto von 2019-11-13 14-49-18
Bildschirmfoto von 2019-11-13 14-49-02

Danke für die Screenshots. Ich hatte erwartet, dass mindestens einer von ihnen auf ähnliche Weise wie der Text fehlschlägt, da sie genau dasselbe Dienstprogramm zum Ändern ihres Fragment-Shaders verwenden. Aber keiner von ihnen scheitert. Vielleicht ist es etwas Bestimmtes im Text glsl. Ich schätze, ich werde anfangen, die Dinge einzeln im Text glsl zu entfernen/anzupassen und zu sehen, ob wir vielleicht den genauen Auslöser eingrenzen können.

Ein paar Versuche:
1) https://5dcc2b581b644200098d5e75--troika-examples.netlify.com/#text
2) https://5dcc302d78835c00089437e2--troika-examples.netlify.com/#text
3) https://5dcc31b70765f2000991ad0f--troika-examples.netlify.com/#text

ok alles 1. 2. und 3. funktioniert mit allen Materialien und mit und ohne Nebel!

😮 Erstaunlich!

OK, eine letzte Sache zu überprüfen, und dann sollte ich genug Informationen für eine endgültige Lösung haben:
https://5dcc47d956b59f00070bea55--troika-examples.netlify.com/#text

Und können Sie bitte überprüfen, ob das Kontrollkästchen Schatten auch funktioniert?

hmm das geht nicht ... komisch :>
Bildschirmfoto von 2019-11-13 21-02-11
Bildschirmfoto von 2019-11-13 21-01-56
Bildschirmfoto von 2019-11-13 21-01-45

Das sind eigentlich gute Nachrichten! Es weist auf eine sehr spezifische Bedingung hin, die das Problem verursacht:

if (uTroikaSDFDebug) {
    gl_FragColor *= 0.5;
  } else {
    discard;
  }

Es sieht so aus, als ob das Ersetzen dieser Bedingung durch nur discard dazu geführt hat, dass es funktioniert hat. Was sehr seltsam ist, weil uTroikaSDFDebug eine Uniform ist, also sollte es sowieso immer zu else gehen. Aber aus irgendeinem Grund mag Ihr System das nicht.

Also entferne ich einfach die Bedingung. Ich könnte versuchen, es als DEFINE oder so umzuformulieren, aber es ist sowieso nicht allzu nützlich.

Ich werde dies zu einer endgültigen Lösung für den Master verarbeiten, Sie dies noch einmal überprüfen lassen und dann eine neue Version veröffentlichen und in der aframe-Komponente aktualisieren. Kann aber ein bis zwei Tage dauern.

Master-Build zum Testen bei Gelegenheit: https://troika-examples.netlify.com/#text

Ja, das funktioniert mit allen Materialien und Nebel an/aus!

@arpu Nochmals vielen Dank für Ihre Zeit und Geduld, um mir bei der Suche nach diesem Problem zu helfen. Dieser Fix wurde in 0.15.7 veröffentlicht.

Ich habe auch aframe-troika-text auf Version 0.1.2 hochgestuft, die die gefixte Version verwendet. Es enthält auch Korrekturen für ThreeJS r110, die Sie zuvor erwähnt hatten.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen