Pretende-se que seja um meta-bug.
Alguns dos métodos restantes estão bloqueados em https://github.com/servo/servo/issues/5014 (aqueles que recebem ArrayBufferView
ou BufferDataSource
e têm substituições), mas alguns outros podem ser implementado sem problemas.
Tentarei arquivar questões individuais para cada deficiência remanescente, já que algumas delas podem ser E-Easy
.
Clique para expandir
A especificação WebGL 1.0 está aqui .
O WebGL é baseado na especificação GLES 2.0, portanto, a especificação WebGL frequentemente aproveita os detalhes para isso. Você pode encontrar uma versão em PDF aqui .
O lado DOM do código WebGL pode ser encontrado nos seguintes arquivos:
components/script/dom/webglrenderingcontext.rs
components/script/dom/webglactiveinfo.rs
components/script/dom/webglbuffer.rs
components/script/dom/webglcontextevent.rs
components/script/dom/webglframebuffer.rs
components/script/dom/webglobject.rs
components/script/dom/webglprogram.rs
components/script/dom/webglrenderbuffer.rs
components/script/dom/webglrenderingcontext.rs
components/script/dom/webglshader.rs
components/script/dom/webglshaderprecisionformat.rs
components/script/dom/webgltexture.rs
components/script/dom/webgluniformlocation.rs
O encadeamento WebGL é o encadeamento que recebe as mensagens WebGL do DOM e as executa ou despacha para o back-end do WebRender.
Você provavelmente não precisa tocar em nada aqui, mas caso queira dar uma olhada, o arquivo é:
components/canvas/webgl_paint_thread.rs
O resto das definições WebGL e as implementações de comando estão no arquivo webrender_traits
webgl.rs
, para serem compartilhados tanto pelo Servo quanto pelo WebRender.
Você vai querer dar uma olhada na definição WebGLCommand
e na função apply
.
Para trabalhar ativamente com ele, o melhor é usar um override de carga .
Observe que WebGLCommand
é reexportado de canvas_traits
como CanvasWebGLMessage
por motivos de legado (para evitar dor extra de rebase enquanto o webrender ainda não se fundiu).
gl.shaderSource()
(# 21754)antialiasing
(# 21285)ImageBitmap
(# 20650)WebGLRenderingContext.bufferSubData
(# 20558)[AllowShared]
(# 20515)drawingBufferWidth
/ drawingBufferHeight
em WebGLRenderingContext
(# 20530)WebGLRenderingContext.getContextAttributes
(# 20532)WebGLRenderingContext.bufferData
(# 20557)[Throws]
não se aplica por sobrecarga (# 20516)WebGLRenderingContext.getProgramInfoLog
(# 20561)handle_object_deletion
pode estar errado (# 21352)WebGLRenderingContext.activeTexture
(# 20531)gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)
(# 20535)gl.getParameter(gl.BLEND_COLOR)
(# 20536)gl.getParameter(gl.COLOR_CLEAR_VALUE)
(# 20537)gl.getParameter(gl.COLOR_WRITEMASK)
(# 20538)gl.getParameter(gl.COMPRESSED_TEXTURE_FORMATS)
(# 20544)gl.getParameter(gl.DEPTH_RANGE)
(# 20545)gl.getParameter(gl.GENERATE_MIPMAP_HINT)
(# 20546)IMPLEMENTATION_COLOR_READ_FORMAT
e IMPLEMENTATION_COLOR_READ_TYPE
(# 20547)MAX_FRAGMENT_UNIFORM_VECTORS
e MAX_VERTEX_UNIFORM_VECTORS
(# 20548)gl.getParameter(gl.MAX_VARYING_VECTORS)
(# 20549)SCISSOR_TEST
e SCISSOR_BOX
(# 20551)gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL)
(# 20552)gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL)
(# 20553)gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL)
(# 20554)WebGLRenderingContext.bindBuffer
(# 20556)gl.renderbufferStorage
(# 20563)WebGLRenderingContext.getFramebufferAttachmentParameter
(# 20593)WebGLRenderingContext.clear
(# 20623)GLclampf
corretamente (# 20652)gl.getParameter
e amigos (# 20655)renderbufferStorage
(# 13710)WebGLShader
destructor afirma frequentemente ao fechar páginas webgl (# 21177)WebGLRenderingContext
s na mesma página.WebGLCommand
como CanvasWebGLMessage
(https://github.com/servo/servo/issues/10211)gl.getActiveAttrib
e gl.getActiveUniform
(# 20600)gl.getVertexAttrib
e gl.getVertexAttribOffset
(# 20608)gl-pointcoord.html
não desenha nada (# 21719)oes-texture-half-float.html
entra em pânico com um erro GL ao executar no modo desktop (# 21663)preserveDrawingBuffer
(# 21132)cc @dmarcos
Eu estarei trabalhando na implementação de generateMipmap
@ConnorGBrewster Abri https://github.com/servo/servo/issues/10226, vamos discutir lá :)
Eu gostaria de trabalhar em getActiveUniform
@saurvs Abri https://github.com/servo/servo/issues/10397 para você,
Eu gostaria de trabalhar em todos os métodos uniformes restantes, se estiver tudo bem
@autrilla Eles são seus! Abri https://github.com/servo/servo/issues/10417 para acompanhá-los, fique à vontade para deixar suas perguntas lá :)
Estou olhando para as funções de estêncil *.
Estou tentando arriscar copyTex*
e texSubImage2D
Tentando
Implement isShader
Implement isTexture
Eu gostaria de ajudar texSubImage2D
@daoshengmu : parece ótimo!
@danlrobertson , você ainda está trabalhando em texSubImage2D
?
@danlrobertson Desculpe, não percebi que você está trabalhando em texSubImage2D
. Eu só quero ajudar na implementação do WebGL. Se você ainda está trabalhando nisso, posso escolher copyTexImage2D
e copyTexSubImage2D
@emilio
@daoshengmu Sem problemas! Está tudo bem! É ruim para mim demorar tanto para conseguir um PR, mas a vida acontece: sorria: ...
Tudo bem para você levar texSubImage2D
? Já implementei os componentes necessários no wr_traits . Eu deveria ter um PR em breve para copyTex*
, mas na verdade eu não tinha começado em texSubImage2D
. Se você quer texSubImage2D
, vá em frente! Não tenho nenhum apego particular a isso. Só queria aprender um pouco sobre o código webgl ...
@danlrobertson Sure. Vou levar texSubImage2D
. Obrigado! 😄
Se estiver tudo bem, vou trabalhar em
Implement isFramebuffer
e
Implement isRenderBuffer
@DDEFISHER vá em frente! Importa-se de abrir um problema para eles para que eu possa designá-lo lá?
Também vou trabalhar em isBuffer
pois é semelhante aos outros 2
Por favor, faça um comentário aqui se você pretende trabalhar neste assunto. Obrigado!
Problemas separados para APIs individuais são materiais fáceis de usar; esse não.
Alguém pode apontar para uma implementação E-easy (ish) na qual eu possa trabalhar? Obrigado :)
@ofekd isEnabled
pode ser uma boa escolha, uma vez que enable
e disable
já estão implementados!
@jdm vou levar
@ofekd isEnabled pode ser complicado como um novo contribuidor, porque você precisa mudar as coisas entre os módulos. Alguns dos casos de teste em webgl-specific.html
, como as funções de mesclagem ou funções de estêncil, devem ser realmente bons pontos de partida. invalid-passed-params.html
provavelmente também tem tarefas fáceis e boas.
@anholt Desde que não seja muito complicado, não me importo de ter que trabalhar um pouco mais. Ainda não comecei a trabalhar nisso, mas, para começar, parece que preciso mudar:
webrender_traits/src/webgl.rs
servo/components/script/dom/webglrenderingcontext.rs
servo/components/script/dom/webidls/WebGLRenderingContext.webidl
A menos que de alguma forma atrapalhe outros esforços, eu continuaria trabalhando em isEnabled
Estarei trabalhando na implementação de validateProgram e getProgramInfoLog
Vou trabalhar em uniformMatrix2fv, uniformMatrix3fv, uniformMatrix4fv e framebufferRenderbuffer, framebufferTexture2D, renderbufferStorage.
Vou executar demos webgl mais exigentes e medir o desempenho no servo e preciso dessas funções;)
@MortimerGoro Tenho trabalhado no suporte FBO (veja algumas fusões recentes e https://github.com/anholt/servo/tree/webgl-fbo). Também juntei https://github.com/anholt/servo/tree/webgl-uniform-matrix-v para uniformmatrix, mas o teste precisa ser depurado.
@anholt incrível! você precisa de ajuda com o teste de matriz uniforme?
@MortimerGoro apenas descobrindo o que está acontecendo com os resultados não confiáveis.
Abri o número 13639 para rastrear o suporte FBO. Quer adicionar isso a framebufferRenderbuffer / framebufferTexture2D?
@ shravan-achar pode estar interessado em trabalhar nos demais aqui.
Parece que errar toDataURL()
para WebGL é a causa de muitos problemas restantes de casos de teste (como asin_001_to_006.html
)
Apenas 5 APIs ausentes agora.
eu, @ taki-jaro, @mrowqa e @xanewok trabalharemos neste problema como um projeto de estudante
cc @KiChjang
Pretendo tentar glGetTexParameter.
Trabalhando em getFramebufferAttachmentParameter()
.
Eu gostaria de fazer getRenderbufferParameter
Este problema parece não estar mais mantendo um registro de edições por algum motivo.
Edit: Parece estar funcionando agora.
Eu adicionei um monte de problemas.
Comentários muito úteis
Pretendo tentar glGetTexParameter.