<p>problema de renderização de texto troika-3d sem erro</p>

Criado em 6 nov. 2019  ·  43Comentários  ·  Fonte: protectwise/troika

testei isso com o componente aframe e construção direta da troika e exemplo em

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

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

Todos 43 comentários

Google Chrome | 78.0.3904.87 (Compilação Offizieller) (64 bits)
Linux
JavaScript | V8 7.8.279.19

FORNECEDOR = 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)] ATIVO

eu lembro se eu encontrei isso na primeira vez que funciona

então eu tento alguma versão mais antiga! e sim, funciona com e600d2cd v0.12.0
Bildschirmfoto von 2019-11-06 22-00-02

ok última versão de trabalho é
f4fcbb8d v0.12.1

v0.13.0 quebra a renderização

Caramba! Obrigado por relatar isso e por restringir a versão exata em que ele quebrou. Vou procurar por esses commits em busca de algo óbvio, mas estou preocupado em não poder verificar uma correção se for específica para sua distribuição Linux ou drivers de GPU.

Tentando fazer um palpite... No seu navegador você vê o espaguete voador aqui? https://troika-examples.netlify.com/#bezier3d

sim isso parece bom

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

fiz um pequeno video do problema, parece que se o rendere usar apenas SDF ( tamanho pequeno) funciona

no oculus go funciona bem

ezgif com-video-to-gif

Droga, isso quebrou meu palpite.

Esse vídeo é fascinante. Posso pensar em alguns motivos para que o comportamento possa ocorrer, mas eles também deveriam ter falhado na versão 0.12.1. Vai continuar procurando...

Para garantir que não estamos lidando com vários problemas diferentes ao longo do tempo, você pode verificar se as compilações a seguir falham da mesma maneira?

sim todos falham com o mesmo

Bem, no momento estou perplexo com este. Passando pelo https://github.com/protectwise/troika/compare/v0.12.1...v0.13.0 diff, não estou vendo uma diferença que deveria causar esse comportamento. A única mudança que deve afetar a renderização do texto é a mudança para a abstração createDerivedShader para a manipulação do sombreador. Eu comparei a saída do shader dessas 2 versões linha por linha e não há diferença na lógica injetada que posso ver, apenas pequenas diferenças em onde ela ocorre (por exemplo, dentro de uma função glsl em vez de void main ou em ordem ligeiramente diferente .) Não vejo por que isso causaria esse problema, mas suponho que seja possível que haja um bug/peculiaridade nesse driver OpenGL específico que possa ser acionado.

Não tenho certeza para onde ir a partir daqui, além de experimentar algumas alterações com base em palpites e testá-las. Não ser capaz de reproduzir prontamente isso é uma dor.

OK, eu entendo, e sim, eu também acho que isso é mais um problema de driver opengl: / Uma descoberta é quando eu dimensiono vejo o vídeo da fonte ->
ezgif com-video-to-gif (1)

para referência aqui nas versões opengl
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 (Core Profile) Mesa 19.2.2

LOL que tipo de efeito legal! 🤣

alguma ideia do que eu poderia testar?

@lojjic uau! achei algo interessante se eu adicionar uma névoa na cena funciona!

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

com névoa de aframe adicionada com sceneEl.setAttribute("fog", "type: linear; far:300;color: 0xefd1b5");

Curioso e curioso. A caixa de seleção "Fog" na página de exemplos da troika também funciona?

hmm não isso não muda nada

ha sim, funciona se eu definir MeshBasicMaterial e selecionar o Fog!

OK obrigado que talvez me dê uma pista para investigar mais.

Vou tentar encontrar algum tempo mais tarde hoje para enviar uma ramificação com algumas tentativas de alterações isoladas e ver se alguma delas ajuda.

OK, aqui está a primeira tentativa - deixe-me saber se não houver alteração, uma alteração, mas ainda com erros ou corrigida: https://5dc9dc90ab55b5000a1db32c--troika-examples.netlify.com/#text

parece um tiro muito bom! :>

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

o uso normal com MeshStandard e MeshBasic Material parece corrigido para mim

apenas com Custom Shader Material é buggy
Bildschirmfoto von 2019-11-11 23-42-22

Isso é ótimo! Estamos chegando a algum lugar.

Você pode tentar este agora, por favor: https://5dc9e7dcea3f6e00084d01a6--troika-examples.netlify.com/#text
Estou tentando isolar uma das duas causas potenciais com esta.

ok isso só funciona correto com MeshBasicMaterial e Fog habilitados

Então é alguma peculiaridade estranha com a ordem de execução. A única diferença entre esses 2 últimos testes foi o que equivale a uma atribuição de identidade ( gl_FragColor = functionThatReturnsArg(gl_FragColor); ) acontecendo após ou antes da lógica do sombreador de texto personalizado. Se vier depois, funciona, e se vier antes, falha (a menos que o fog esteja ativado, o que adiciona um gl_FragColor.rgb = ... extra antes da lógica do texto, e isso também funciona, mas apenas em MeshBasicMaterial. sigh .

Aqui está um hack desagradável apenas para ver se adicionar um gl_FragColor = gl_FragColor; no final dá um chute: https://5dc9f0d8e82cdf00089f6b6c--troika-examples.netlify.com/#text

ok mesmo com o ultimo só funciona com BasicMaterial e Fog on...

OK, mais algumas tentativas para você...

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

todos os três o mesmo só funciona com BasicMaterial e Fog ativado

ECA. Obrigado por ser tão paciente em testar todos os meus palpites malucos. Isso ainda não faz sentido para mim.

Testando mais uma hipótese: https://5dcaea1c9bbf6e00074b3c7a--troika-examples.netlify.com/#text

np, isso sempre quebra com a névoa desligada e todos os materiais

Você poderia, por favor, pegar mais algumas capturas de tela de outros exemplos para mim quando tiver um momento:

1) https://troika-examples.netlify.com/#arcs com o shader "Double-Derived" selecionado
2) https://troika-examples.netlify.com/#ui
3) https://troika-examples.netlify.com/#bezier3d com um valor diferente de zero para a opção "tracejado"

Esses exemplos usam técnicas semelhantes ao sombreador de fragmento de texto, portanto, quero ver se há semelhança em seu comportamento.

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

Obrigado pelas capturas de tela. Eu esperava que pelo menos um deles falhasse de maneira semelhante ao texto, pois eles usam o mesmo utilitário exato para modificar seu sombreador de fragmento. Mas nenhum deles falha. Então talvez seja algo específico no texto glsl. Acho que vou começar a remover/ajustar as coisas uma a uma no texto glsl e ver se podemos diminuir o gatilho exato.

Algumas tentativas:
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 tudo 1. 2. e 3. funciona com todo material e com e sem neblina!

😮 Incrível!

OK, uma última coisa para verificar e, em seguida, devo ter informações suficientes para uma correção final:
https://5dcc47d956b59f00070bea55--troika-examples.netlify.com/#text

E você pode verificar se a caixa de seleção Shadows também funciona, por favor?

hmm isso não funciona ... estranho :>
Bildschirmfoto von 2019-11-13 21-02-11
Bildschirmfoto von 2019-11-13 21-01-56
Bildschirmfoto von 2019-11-13 21-01-45

Isso é realmente uma boa notícia! Ele aponta para uma condicional muito específica como causa do problema:

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

Parece que substituir essa condicional por apenas discard foi o que fez com que ela começasse a funcionar. O que é muito estranho, porque uTroikaSDFDebug é um uniforme, então deve sempre ir para else qualquer maneira. Mas por algum motivo seu sistema não gosta disso.

Então, vou apenas remover a condicional. Eu poderia tentar reformulá-lo como um DEFINE ou algo assim, mas não é tão útil de qualquer maneira.

Vou trabalhar isso em uma correção final no master, faça você verificar isso mais uma vez e, em seguida, publicar uma nova versão e atualizá-la no componente aframe. Pode levar um dia ou dois embora.

Master build para testar, quando você tiver uma chance: https://troika-examples.netlify.com/#text

sim, isso funciona com todos os materiais e neblina ligado/desligado!

@arpu Obrigado mais uma vez por seu tempo e paciência em me ajudar a rastrear esse problema. Esta correção foi publicada em 0.15.7.

Eu também troquei aframe-troika-text para a versão 0.1.2 que usa a versão fixa. Ele também contém correções para o ThreeJS r110 que você mencionou antes.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

stephencorwin picture stephencorwin  ·  39Comentários

lojjic picture lojjic  ·  11Comentários

drcmda picture drcmda  ·  11Comentários

Ocelyn picture Ocelyn  ·  13Comentários

lojjic picture lojjic  ·  18Comentários