Esto está destinado a ser un meta-error.
Algunos de los métodos restantes están bloqueados en https://github.com/servo/servo/issues/5014 (aquellos que reciben ArrayBufferView
o BufferDataSource
y tienen anulaciones), pero algunos otros pueden ser implementado sin problemas.
Intentaré presentar problemas individuales para cada deficiencia restante, ya que algunos de ellos pueden ser E-Easy
.
Haga clic para ampliar
La especificación WebGL 1.0 está aquí .
WebGL se basa en la especificación GLES 2.0, por lo que la especificación WebGL a menudo aprovecha los detalles. Puede encontrar una versión en PDF aquí .
El lado DOM del código WebGL se puede encontrar en los siguientes archivos:
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
El hilo WebGL es el hilo que recibe los mensajes WebGL del DOM y lo ejecuta o lo envía al backend de WebRender.
Probablemente no necesite tocar nada aquí, pero en caso de que quiera echar un vistazo, el archivo es:
components/canvas/webgl_paint_thread.rs
El resto de las definiciones de WebGL y las implementaciones de mandatos están en webrender_traits
's webgl.rs
archivo , con el fin de ser compartido por ambos servo y WebRender.
Querrá echar un vistazo a la definición WebGLCommand
y a la función apply
.
Para trabajar activamente con él, lo mejor es utilizar una anulación de carga .
Tenga en cuenta que WebGLCommand
se reexporta de canvas_traits
como CanvasWebGLMessage
por razones heredadas (para evitar problemas adicionales de rebase mientras webrender aún no se había fusionado).
gl.shaderSource()
(# 21754)antialiasing
(# 21285)ImageBitmap
(# 20650)WebGLRenderingContext.bufferSubData
(# 20558)[AllowShared]
(# 20515)drawingBufferWidth
/ drawingBufferHeight
en WebGLRenderingContext
(# 20530)WebGLRenderingContext.getContextAttributes
(# 20532)WebGLRenderingContext.bufferData
(# 20557)[Throws]
no se aplica por sobrecarga (# 20516)WebGLRenderingContext.getProgramInfoLog
(# 20561)handle_object_deletion
puede estar equivocado (# 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
y IMPLEMENTATION_COLOR_READ_TYPE
(# 20547)MAX_FRAGMENT_UNIFORM_VECTORS
y MAX_VERTEX_UNIFORM_VECTORS
(# 20548)gl.getParameter(gl.MAX_VARYING_VECTORS)
(# 20549)SCISSOR_TEST
y 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
cheques (# 20556)gl.renderbufferStorage
(# 20563)WebGLRenderingContext.getFramebufferAttachmentParameter
(# 20593)WebGLRenderingContext.clear
(# 20623)GLclampf
correctamente (# 20652)gl.getParameter
y amigos (# 20655)renderbufferStorage
(# 13710)WebGLShader
destructor afirma con frecuencia al cerrar páginas webgl (# 21177)WebGLRenderingContext
s en la misma página.WebGLCommand
como CanvasWebGLMessage
(https://github.com/servo/servo/issues/10211)gl.getActiveAttrib
y gl.getActiveUniform
(# 20600)gl.getVertexAttrib
y gl.getVertexAttribOffset
(# 20608)gl-pointcoord.html
no dibuja nada (# 21719)oes-texture-half-float.html
entra en pánico con un error GL cuando se ejecuta en modo de escritorio (# 21663)preserveDrawingBuffer
(# 21132)cc @dmarcos
Estaré trabajando en la implementación de generateMipmap
@ConnorGBrewster Abrí https://github.com/servo/servo/issues/10226, discutamos allí :)
Me gustaría trabajar en getActiveUniform
@saurvs Abrí https://github.com/servo/servo/issues/10397 para ti, no
Me gustaría trabajar en todos los métodos uniformes restantes, si está bien
@autrilla ¡ Son tuyos! Abrí https://github.com/servo/servo/issues/10417 para realizar un seguimiento de ellos, no dude en dejar cualquier pregunta allí :)
Estoy viendo las funciones de la plantilla *.
Estoy probando copyTex*
y texSubImage2D
Intentando
Implement isShader
Implement isTexture
Me gustaría ayudar texSubImage2D
@daoshengmu : ¡suena genial!
@danlrobertson , ¿sigues trabajando en texSubImage2D
?
@danlrobertson Lo siento porque no me di cuenta de que estás trabajando en texSubImage2D
. Solo quiero ayudar en la implementación de WebGL. Si todavía está trabajando en ello, puedo elegir copyTexImage2D
y copyTexSubImage2D
@emilio
@daoshengmu ¡ No hay problema! ¡Está totalmente bien! Es mi culpa haber tardado tanto en conseguir un PR, pero, por desgracia, la vida pasa: sonríe: ...
¿Está de acuerdo con tomar texSubImage2D
? Ya implementé los componentes necesarios en wr_traits . Debería tener un PR en breve por copyTex*
, pero en realidad no había comenzado en texSubImage2D
. Si quieres texSubImage2D
, ¡adelante! No le tengo ningún apego especial. Solo quería aprender un poco sobre el código webgl ...
@danlrobertson Seguro. Tomaré texSubImage2D
. ¡Gracias! 😄
Si está bien, voy a trabajar en
Implement isFramebuffer
y
Implement isRenderBuffer
@DDEFISHER ¡adelante! ¿Te importaría abrir un número para ellos para poder asignarte allí?
También voy a trabajar en isBuffer
ya que es similar a los otros 2
Haga un comentario aquí si tiene la intención de trabajar en este problema. ¡Gracias!
Temas separados para API individuales son material E-easy; este no.
¿Alguien puede señalar una implementación de E-easy (ish) en la que pueda trabajar? Gracias :)
@ofekd isEnabled
podría ser una buena opción, ¡ya que enable
y disable
ya están implementados!
@jdm me lo llevo
@ofekd isEnabled podría ser complicado como nuevo colaborador, porque necesita cambiar las cosas en los módulos. Algunos de los casos de prueba en webgl-specific.html
, como los de función de combinación o de plantilla, deberían ser muy buenos puntos de partida. invalid-passed-params.html
probablemente también tenga buenas tareas fáciles.
@anholt Mientras no sea muy complicado, no me importa tener que trabajar un poco más. Todavía no comencé a trabajar en esto, pero para empezar, parece que necesito cambiar:
webrender_traits/src/webgl.rs
servo/components/script/dom/webglrenderingcontext.rs
servo/components/script/dom/webidls/WebGLRenderingContext.webidl
A menos que de alguna manera obstaculice otros esfuerzos, seguiría trabajando en isEnabled
Estaré trabajando en la implementación de validateProgram y getProgramInfoLog
Trabajaré en uniformMatrix2fv, uniformMatrix3fv, uniformMatrix4fv y framebufferRenderbuffer, framebufferTexture2D, renderbufferStorage.
Voy a ejecutar demostraciones webgl más exigentes y medir el rendimiento en el servo y necesito esas funciones;)
@MortimerGoro He estado trabajando en el soporte de FBO (vea un par de fusiones recientes y https://github.com/anholt/servo/tree/webgl-fbo). También armé https://github.com/anholt/servo/tree/webgl-uniform-matrix-v para uniformmatrix, pero las pruebas deben depurarse.
@anholt ¡increíble! ¿Necesita ayuda con las pruebas de matriz uniforme?
@MortimerGoro acaba de averiguar qué está pasando con los resultados poco fiables.
Abrí el número 13639 para rastrear el soporte de FBO. ¿Quieres agregar eso a framebufferRenderbuffer / framebufferTexture2D?
@ shravan-achar podría estar interesado en trabajar en los restantes aquí.
Parece que perder toDataURL()
para WebGL es la causa de muchos problemas restantes de casos de prueba (como asin_001_to_006.html
)
Ahora solo faltan 5 API.
yo, @ taki-jaro, @mrowqa y @xanewok trabajaremos en este tema como un proyecto estudiantil
cc @KiChjang
Planeo intentar glGetTexParameter.
Trabajando en getFramebufferAttachmentParameter()
.
Me gustaría hacer getRenderbufferParameter
Este problema ya no parece mantener un registro de ediciones por alguna razón.
Editar: parece estar funcionando ahora.
Agregué un montón de problemas.
Comentario más útil
Planeo intentar glGetTexParameter.