C'est censé être un méta-bug.
Certaines des méthodes restantes sont bloquées sur https://github.com/servo/servo/issues/5014 (celles qui reçoivent ArrayBufferView
ou BufferDataSource
et ont des dérogations), mais d'autres peuvent être mis en œuvre sans problème.
Je vais essayer de classer des problèmes individuels pour chaque déficience restante, car certains d'entre eux peuvent être de E-Easy
.
Cliquez pour agrandir
La spécification WebGL 1.0 est ici .
WebGL est basé sur la spécification GLES 2.0, donc la spécification WebGL exploite souvent les détails. Vous pouvez trouver une version PDF ici .
Le côté DOM du code WebGL se trouve dans les fichiers suivants :
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
Le thread WebGL est le thread qui reçoit les messages WebGL du DOM et les exécute ou les envoie au backend WebRender.
Vous n'avez probablement pas besoin de toucher à quoi que ce soit ici, mais au cas où vous voudriez jeter un œil, le fichier est :
components/canvas/webgl_paint_thread.rs
Le reste des définitions de WebGL et les implémentations de commande sont en webrender_traits
« s webgl.rs
fichier , afin d'être partagée par les deux servo et WebRender.
Jetez un œil à la définition WebGLCommand
et à la fonction apply
.
Pour travailler activement avec elle, le mieux est d'utiliser une dérogation Cargo .
Notez que WebGLCommand
est réexporté à partir de canvas_traits
tant que CanvasWebGLMessage
pour des raisons héritées (pour éviter des problèmes de rebase supplémentaires alors que webrender n'avait pas encore fusionné).
gl.shaderSource()
(#21754)antialiasing
option de contexte WebGL de ImageBitmap
(#20650)WebGLRenderingContext.bufferSubData
(#20558)[AllowShared]
(#20515)drawingBufferWidth
/ drawingBufferHeight
dans WebGLRenderingContext
(#20530)WebGLRenderingContext.getContextAttributes
(#20532)WebGLRenderingContext.bufferData
(#20557)[Throws]
ne s'applique pas par surcharge (#20516)WebGLRenderingContext.getProgramInfoLog
(#20561)handle_object_deletion
peut être faux (#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
et IMPLEMENTATION_COLOR_READ_TYPE
(#20547)MAX_FRAGMENT_UNIFORM_VECTORS
et MAX_VERTEX_UNIFORM_VECTORS
(#20548)gl.getParameter(gl.MAX_VARYING_VECTORS)
(#20549)SCISSOR_TEST
et 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
correctement (#20652)gl.getParameter
et amis (#20655)renderbufferStorage
(#13710)WebGLShader
affirme fréquemment lors de la fermeture des pages webgl (#21177)WebGLRenderingContext
s dans la même page.WebGLCommand
en CanvasWebGLMessage
(https://github.com/servo/servo/issues/10211)gl.getActiveAttrib
et gl.getActiveUniform
(#20600)gl.getVertexAttrib
et gl.getVertexAttribOffset
(#20608)gl-pointcoord.html
ne dessine rien (#21719)oes-texture-half-float.html
panique avec une erreur GL lors de l'exécution en mode bureau (#21663)preserveDrawingBuffer
option de contexte WebGL de cc @dmarcos
Je travaillerai sur l'implémentation de generateMipmap
@ConnorGBrewster J'ai ouvert https://github.com/servo/servo/issues/10226, discutons-en là :)
J'aimerais travailler sur getActiveUniform
@saurvs j'ai ouvert https://github.com/servo/servo/issues/10397 pour vous, n'hésitez pas à poser toute question que vous pourriez avoir là :)
J'aimerais travailler sur toutes les méthodes uniformes restantes, si ça vous va
@autrilla Ils sont à vous ! J'ai ouvert https://github.com/servo/servo/issues/10417 pour les suivre, n'hésitez pas à y laisser vos questions :)
Je regarde les fonctions stencil*.
Je prends un crack à copyTex*
et texSubImage2D
Tenter
Implement isShader
Implement isTexture
Je voudrais aider texSubImage2D
@daoshengmu :
@danlrobertson , travaillez-vous toujours sur texSubImage2D
?
@danlrobertson Désolé car je n'avais pas remarqué que vous travailliez sur texSubImage2D
. Je veux juste aider à l'implémentation de WebGL. Si vous travaillez toujours dessus, je peux choisir copyTexImage2D
et copyTexSubImage2D
@emilio
@daoshengmu Pas de problème ! C'est tout à fait correct ! C'est mon mal d'avoir mis autant de temps à obtenir un PR, mais hélas la vie arrive : smile:...
Acceptez-vous de prendre texSubImage2D
? J'ai déjà implémenté les composants nécessaires dans copyTex*
, mais en fait je n'avais pas commencé sur texSubImage2D
. Si vous voulez texSubImage2D
, allez-y ! Je n'y ai pas d'attachement particulier. Je voulais juste en savoir un peu plus sur le code webgl...
@danlrobertson Bien sûr. Je prendrai texSubImage2D
. Merci! ??
Si ça va, je vais travailler dessus
Implement isFramebuffer
et
Implement isRenderBuffer
@DDEFISHER vas-y ! Cela vous dérange d'ouvrir un problème pour ceux-ci afin que je puisse vous y affecter ?
Je vais aussi travailler sur isBuffer
car il est similaire aux 2 autres
Veuillez faire un commentaire ici si vous avez l'intention de travailler sur ce problème. Merci!
Les problèmes distincts pour les API individuelles sont le matériel E-easy ; pas celui-ci.
Quelqu'un peut-il indiquer une implémentation E-easy(ish) sur laquelle je peux travailler ? Merci :)
@ofekd isEnabled
pourrait être un bon choix, puisque enable
et disable
sont déjà implémentés !
@jdm je vais le prendre
@ofekd isEnabled peut être délicat en tant que nouveau contributeur, car vous devez changer les choses entre les modules. Certains des cas de test de webgl-specific.html
, comme les fonctions de mélange ou de pochoir, devraient être de très bons points de départ. invalid-passed-params.html
probablement aussi de bonnes tâches faciles.
@anholt Tant que ce n'est pas très compliqué, cela ne me dérange pas de devoir travailler un peu plus. Je n'ai pas encore commencé à travailler dessus, mais pour commencer, il semble que je doive changer :
webrender_traits/src/webgl.rs
servo/components/script/dom/webglrenderingcontext.rs
servo/components/script/dom/webidls/WebGLRenderingContext.webidl
À moins que cela n'entrave d'autres efforts, je continuerais à travailler sur isEnabled
Je travaillerai sur la mise en œuvre de validateProgram et getProgramInfoLog
Je travaillerai chez uniformMatrix2fv, uniformMatrix3fv, uniformMatrix4fv et framebufferRenderbuffer, framebufferTexture2D, renderbufferStorage.
Je vais exécuter des démos webgl plus exigeantes et mesurer les performances sur le servo et j'ai besoin de ces fonctions ;)
@MortimerGoro J'ai travaillé sur le support FBO (voir quelques fusions récentes et https://github.com/anholt/servo/tree/webgl-fbo). J'ai également mis en place https://github.com/anholt/servo/tree/webgl-uniform-matrix-v pour uniformmatrix, mais les tests doivent être débogués.
@anholt génial ! avez-vous besoin d'aide pour les tests uniformmatrix ?
@MortimerGoro vient juste de comprendre ce qui se passe avec les résultats peu fiables.
J'ai ouvert #13639 pour suivre le support FBO. Voulez-vous ajouter cela à framebufferRenderbuffer/framebufferTexture2D ?
@shravan-achar pourrait être intéressé à travailler sur les autres ici.
Il semble que l'absence de toDataURL()
pour WebGL soit la cause de nombreux problèmes de cas de test restants (comme asin_001_to_006.html
)
Seulement 5 API manquantes maintenant.
moi, @taki-jaro, @mrowqa et @xanewok travaillerons sur cette question en tant que projet étudiant
cc @KiChjang
Je prévois d'essayer glGetTexParameter.
Travailler sur getFramebufferAttachmentParameter()
.
J'aimerais faire getRenderbufferParameter
Ce problème ne semble plus conserver un enregistrement des modifications pour une raison quelconque.
Edit : ça a l'air de fonctionner maintenant.
J'ai ajouté un tas de problèmes.
Commentaire le plus utile
Je prévois d'essayer glGetTexParameter.