habe dies mit der aframe-komponente getestet und direkt troika build and example on
https://troika-examples.netlify.com/#text
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
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
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
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 ->
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!
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! :>
Die normale Nutzung mit MeshStandard und MeshBasic Material sieht für mich behoben aus
nur mit Custom Shader Material ist fehlerhaft
Diese Änderung hat es für mich behoben https://github.com/protectwise/troika/commit/85c71d6af2c1e09966c5e588745008dc4b923ae2
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.
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 :>
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.