<p>masalah render teks troika-3d tanpa kesalahan</p>

Dibuat pada 6 Nov 2019  ·  43Komentar  ·  Sumber: protectwise/troika

menguji ini dengan komponen aframe dan build troika langsung dan contohnya pada

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

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

Semua 43 komentar

Google Chrome | 78.0.3904.87 (Builan Offzieller) (64-Bit)
Linux
JavaScript | V8 7.8.279.19

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

saya ingat jika saya menemukan ini pertama kali berhasil

jadi saya mencoba beberapa versi yang lebih lama! dan ya ini berfungsi dengan e600d2cd v0.12.0
Bildschirmfoto von 2019-11-06 22-00-02

ok versi kerja terakhir adalah
f4fcbb8d v0.12.1

v0.13.0 merusak rendering

Astaga! Terima kasih telah melaporkan ini, dan untuk mempersempit versi persis di mana itu rusak. Saya akan memeriksa komit itu untuk mencari sesuatu yang jelas, tetapi saya khawatir saya tidak akan dapat memverifikasi perbaikan jika itu khusus untuk distro Linux atau driver GPU Anda.

Mencoba bekerja dengan firasat... Di browser Anda, apakah Anda melihat spageti terbang di sini? https://troika-examples.netlify.com/#bezier3d

ya ini terlihat baik-baik saja

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

membuat video kecil dari masalah, sepertinya jika rendere hanya menggunakan SDF (ukuran kecil) berfungsi

di oculus go berfungsi dengan baik

ezgif com-video-to-gif

Sial, itu mematahkan firasatku.

Video itu menarik. Saya dapat memikirkan beberapa alasan mengapa perilaku dapat terjadi, tetapi itu seharusnya juga gagal di 0.12.1. Akan terus mencari...

Untuk memastikan kami tidak menghadapi banyak masalah yang berbeda sepanjang waktu, dapatkah Anda memverifikasi bahwa semua build berikut gagal dengan cara yang sama?

ya semua gagal sama

Nah untuk saat ini saya bingung dengan yang satu ini. Melalui https://github.com/protectwise/troika/compare/v0.12.1...v0.13.0 , saya tidak melihat perbedaan yang menyebabkan perilaku ini. Satu-satunya perubahan di sana yang akan memengaruhi rendering teks adalah peralihan ke abstraksi createDerivedShader untuk manipulasi shader. Saya telah membandingkan output shader dari 2 versi tersebut baris demi baris dan tidak ada perbedaan dalam logika yang disuntikkan yang dapat saya lihat, hanya sedikit perbedaan di mana itu terjadi (misalnya dalam fungsi glsl daripada di void main atau dalam urutan yang sedikit berbeda .) Saya tidak mengerti mengapa itu akan menyebabkan masalah ini, tetapi saya kira mungkin ada bug/quirk pada driver OpenGL tertentu yang mungkin dipicu.

Tidak yakin ke mana harus pergi dari sini selain mencoba beberapa perubahan berdasarkan firasat dan meminta Anda mengujinya. Tidak dapat dengan mudah mereproduksi ini adalah rasa sakit.

OK, saya mengerti, dan ya saya pikir ini juga lebih merupakan masalah driver opengl:/ Satu temuan adalah ketika saya skala saya melihat video font ->
ezgif com-video-to-gif (1)

untuk referensi di sini versi opengl
GL_VENDOR X.Org GL_RENDERER Grafis AMD Radeon (TM) RX 460 (POLARIS11, DRM 3.33.0, 5.3.8-300.fc31.x86_64, LLVM 9.0.0) GL_VERSION 4.5 (Profil Inti) Mesa 19.2.2

LOL itu semacam efek yang rapi! 🤣.

tahu apa yang bisa saya uji?

@lojjic wah! menemukan sesuatu yang menarik jika saya menambahkan kabut ke adegan itu berhasil!

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

dengan menambahkan kabut aframe dengan sceneEl.setAttribute("fog", "type: linear; far:300;color: 0xefd1b5");

Makin penasaran dan penasaran. Apakah kotak centang "Kabut" pada halaman contoh troika juga berfungsi?

hmm tidak, ini tidak mengubah apa pun

ha ya itu berfungsi jika saya mengatur MeshBasicMaterial dan memilih Fog!

OK terima kasih itu mungkin memberi saya petunjuk untuk menyelidiki lebih lanjut.

Saya akan mencoba mencari waktu nanti hari ini untuk mendorong cabang dengan beberapa upaya pada perubahan yang terisolasi, dan melihat apakah ada yang membantu.

Oke ini percobaan pertama - beri tahu saya jika tidak ada perubahan, perubahan tetapi masih buggy, atau diperbaiki: https://5dc9dc90ab55b5000a1db32c--troika-examples.netlify.com/#text

terlihat seperti tembakan yang sangat bagus! :>

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

penggunaan normal dengan MeshStandard dan MeshBasic Material terlihat tetap untuk saya

hanya dengan Bahan Shader Kustom yang buggy
Bildschirmfoto von 2019-11-11 23-42-22

Itu keren! Kita pergi ke suatu tempat.

Bisakah Anda mencoba yang ini sekarang: https://5dc9e7dcea3f6e00084d01a6--troika-examples.netlify.com/#text
Saya mencoba mengisolasi salah satu dari dua akar penyebab potensial dengan yang satu ini.

ok ini hanya berfungsi dengan benar dengan MeshBasicMaterial dan Fog diaktifkan

Jadi ada keanehan aneh dengan urutan eksekusi. Satu-satunya perbedaan antara 2 tes terakhir itu adalah jumlah penetapan identitas ( gl_FragColor = functionThatReturnsArg(gl_FragColor); ) yang terjadi baik setelah atau sebelum logika shader teks kustom. Jika muncul setelah berhasil, dan jika muncul sebelumnya maka gagal (kecuali jika fog diaktifkan, yang menambahkan gl_FragColor.rgb = ... tambahan sebelum logika teks, dan itu juga berfungsi tetapi hanya di MeshBasicMaterial. sigh .

Inilah peretasan yang buruk hanya dengan melihat apakah menambahkan gl_FragColor = gl_FragColor; di bagian akhir memberikan tendangan: https://5dc9f0d8e82cdf00089f6b6c--troika-examples.netlify.com/#text

ok sama dengan yang terakhir hanya bekerja dengan BasicMaterial dan Fog on ...

Oke, beberapa percobaan lagi untukmu...

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

ketiganya sama hanya berfungsi dengan BasicMaterial dan Fog diaktifkan

Ugh. Terima kasih telah begitu sabar menguji semua tebakan liar saya. Ini masih tidak masuk akal bagi saya.

Menguji hipotesis lain: https://5dcaea1c9bbf6e00074b3c7a--troika-examples.netlify.com/#text

np, ini selalu pecah dengan kabut aktif dan semua Material

Bisakah Anda mengambil beberapa tangkapan layar lagi dari contoh lain untuk saya ketika Anda punya waktu:

1) https://troika-examples.netlify.com/#arcs dengan shader "Double-Derived" dipilih
2) https://troika-examples.netlify.com/#ui
3) https://troika-examples.netlify.com/#bezier3d dengan nilai bukan nol untuk opsi "putus-putus"

Contoh-contoh ini menggunakan teknik yang mirip dengan shader fragmen teks, jadi saya ingin melihat apakah ada kesamaan dalam perilaku mereka.

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

Terima kasih untuk screenshotnya. Saya mengharapkan setidaknya satu dari mereka gagal dengan cara yang mirip dengan teks, karena mereka menggunakan utilitas yang sama persis untuk memodifikasi shader fragmen mereka. Tapi tidak satupun dari mereka gagal. Jadi mungkin itu sesuatu yang spesifik dalam teks glsl. Saya kira saya akan mulai menghapus/mengubah hal-hal satu per satu di teks glsl dan melihat apakah kami dapat mempersempit pemicu yang tepat.

Beberapa percobaan:
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 semua 1. 2. dan 3. bekerja dengan semua bahan dan dengan dan tanpa kabut!

Menakjubkan!

OK satu hal terakhir untuk diperiksa dan kemudian saya harus memiliki cukup info untuk perbaikan terakhir:
https://5dcc47d956b59f00070bea55--troika-examples.netlify.com/#text

Dan bisakah Anda memverifikasi bahwa kotak centang Shadows berfungsi juga?

hmm ini tidak berhasil ... aneh :>
Bildschirmfoto von 2019-11-13 21-02-11
Bildschirmfoto von 2019-11-13 21-01-56
Bildschirmfoto von 2019-11-13 21-01-45

Itu sebenarnya kabar baik! Ini menunjuk pada kondisi yang sangat spesifik sebagai penyebab masalah:

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

Sepertinya mengganti kondisional itu hanya dengan discard adalah yang membuatnya mulai berfungsi. Yang sangat aneh, karena uTroikaSDFDebug adalah seragam sehingga harus selalu menggunakan else . Tetapi untuk beberapa alasan sistem Anda tidak menyukainya.

Jadi saya hanya akan menghapus kondisional. Saya dapat mencoba memformulasi ulangnya sebagai DEFINE atau semacamnya, tetapi toh tidak terlalu berguna.

Saya akan mengerjakan ini menjadi perbaikan terakhir pada master, minta Anda memverifikasi itu sekali lagi, dan kemudian menerbitkan versi baru dan memperbaruinya di komponen aframe. Mungkin butuh satu atau dua hari.

Master build untuk menguji, ketika Anda mendapat kesempatan: https://troika-examples.netlify.com/#text

ya ini bekerja dengan semua Material dan fog on/off!

@arpu Terima kasih sekali lagi atas waktu dan kesabaran Anda dalam membantu saya melacak masalah ini. Perbaikan ini telah diterbitkan di 0.15.7.

Saya juga telah menabrak aframe-troika-text ke versi 0.1.2 yang menggunakan versi tetap. Ini juga berisi perbaikan untuk ThreeJS r110 yang telah Anda sebutkan sebelumnya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat