これはメタバグを意図しています。
残りのメソッドの一部はhttps://github.com/servo/servo/issues/5014でブロックされていArrayBufferView
またはBufferDataSource
を受け取り、オーバーライドがあるメソッド)が、他のメソッドはブロックされる可能性があります問題なく実装されました。
それらのいくつかはE-Easy
である可能性があるため、残りの欠陥ごとに個別の問題を提出しようとします。
クリックして展開
WebGL1.0の仕様はこちらです。
WebGLはGLES2.0仕様に基づいているため、WebGL仕様は多くの場合詳細を活用します。 PDF版はこちらからご覧いただけます。
WebGLコードのDOM側は、次のファイルにあります。
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
WebGLスレッドは、DOMからWebGLメッセージを受信し、それを実行するか、WebRenderバックエンドにディスパッチするスレッドです。
ここではおそらく何も触れる必要はありませんが、確認したい場合は、ファイルは次のとおりです。
components/canvas/webgl_paint_thread.rs
残りのWebGL定義とコマンド実装は、ServoとWebRenderの両方で共有するために、 webrender_traits
のwebgl.rs
ファイルにあります。
WebGLCommand
定義とapply
関数を確認することをお勧めし
それを積極的に使用するには、 Cargooverrideを使用するのが最善です。
ことを注意WebGLCommand
されて再輸出からcanvas_traits
のようにCanvasWebGLMessage
レガシーの理由では、(webrenderがまだマージされていなかった一方で、余分なリベースの痛みを避けるため)。
gl.shaderSource()
渡されたソースを検証します(#21754)antialiasing
のWebGLコンテキストオプションをサポート(#21285)ImageBitmap
実装する(#20650)WebGLRenderingContext.bufferSubData
(#20558)のオーバーフローから適切に防御する[AllowShared]
適切にサポートする(#20515)drawingBufferWidth
/ drawingBufferHeight
をWebGLRenderingContext
キャッシュする(#20530)WebGLRenderingContext.getContextAttributes
キャッシュ結果(#20532)WebGLRenderingContext.bufferData
(#20557)で空のバッファを何にも割り当てないでください[Throws]
はオーバーロードごとに適用されません(#20516)WebGLRenderingContext.getProgramInfoLog
の動作を監査する(#20561)handle_object_deletion
が間違っている可能性があります(#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
およびIMPLEMENTATION_COLOR_READ_TYPE
サポート(#20547)MAX_FRAGMENT_UNIFORM_VECTORS
およびMAX_VERTEX_UNIFORM_VECTORS
サポート(#20548)gl.getParameter(gl.MAX_VARYING_VECTORS)
実装する(#20549)SCISSOR_TEST
および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
正しくバインドするかどうかを確認します(#20652)gl.getParameter
とその友達に正しいタイプを返す(#20655)renderbufferStorage
からの初期化されていないデータ漏洩を修正(#13710)WebGLShader
デストラクタは、webglページを閉じるときに頻繁にアサートします(#21177)WebGLRenderingContext
がある場合は、検証を再確認してください。WebGLCommand
をCanvasWebGLMessage
として再エクスポートするのを停止します(https://github.com/servo/servo/issues/10211)gl.getActiveAttrib
とgl.getActiveUniform
必要な情報をキャッシュする(#20600)gl.getVertexAttrib
およびgl.getVertexAttribOffset
必要なキャッシュ情報(#20608)gl-pointcoord.html
は何も描画しません(#21719)oes-texture-half-float.html
は、デスクトップモードで実行するとGLエラーでパニックになります(#21663)preserveDrawingBuffer
のWebGLコンテキストオプションをサポート(#21132)cc @dmarcos
私はgenerateMipmapの実装に取り組んでいます
@ConnorGBrewster https://github.com/servo/servo/issues/10226を開きました、そこで議論しましょう:)
getActiveUniform
に取り組みたいのですが
@saurvs https://github.com/servo/servo/issues/10397を開いたので、質問があれば
よろしければ、残りのすべての統一された方法に取り組みたいと思います
@autrilla彼らはあなたのものです! 私はそれらを追跡するためにhttps://github.com/servo/servo/issues/10417を開きました、そこに質問を残してください:)
ステンシル*関数を見ています。
私はcopyTex*
とtexSubImage2D
クラックを取っています
しようとしています
Implement isShader
Implement isTexture
texSubImage2D
を手伝いたい
@daoshengmu :いいですね!
@danlrobertson 、あなたはまだtexSubImage2D
取り組んでいますか?
@danlrobertson申し訳ありませんが、 texSubImage2D
作業していることに気づきませんtexSubImage2D
。 WebGLの実装を支援したいだけです。 まだ作業中の場合は、 copyTexImage2D
とcopyTexSubImage2D
@ emilioを選択できます
@daoshengmu問題ありません! 大丈夫です! PRを取得するのに時間がかかるのは私の悪いことですが、悲しいかな人生は起こります:笑顔:...
texSubImage2D
を取っても大丈夫ですか? 私はすでにnecesary部品を実装してwr_traits 。 間もなくcopyTex*
PRが必要ですが、実際にはtexSubImage2D
から始めていませんtexSubImage2D
が必要な場合は、ぜひお試しください。 特別な愛着はありません。 webglコードについて少し学びたかっただけです...
@danlrobertsonもちろんです。 texSubImage2D
を取ります。 ありがとう! 😄
大丈夫なら私は取り組むつもりですImplement isFramebuffer
とImplement isRenderBuffer
@DDEFISHERはそれのために行きます! 私があなたをそこに割り当てることができるようにそれらのために問題を開くことを気にしますか?
他の2つと似ているので、 isBuffer
にも取り組み
この問題に取り組むつもりなら、ここにコメントしてください。 ありがとうございました!
個々のAPIの個別の問題は、簡単な資料です。 これじゃない。
誰かが私が取り組むことができるE-easy(ish)実装を指摘できますか? ありがとう :)
@ofekd isEnabled
は、 enable
とdisable
がすでに実装されているため、良い選択かもしれません。
@jdm私はそれを取ります
@ofekd isEnabledは、モジュール間で変更する必要があるため、新しい寄稿者としては注意が必要な場合があります。 ブレンド関数やステンシル関数のようなwebgl-specific.html
のテストケースのいくつかは、本当に良い出発点になるはずです。 invalid-passed-params.html
は、簡単なタスクも含まれている可能性があります。
@anholtそれほど複雑でない限り、
webrender_traits/src/webgl.rs
servo/components/script/dom/webglrenderingcontext.rs
servo/components/script/dom/webidls/WebGLRenderingContext.webidl
それが他の努力を何らかの形で妨げない限り、私はisEnabled
取り組み続けます
私はvalidateProgramとgetProgramInfoLogの実装に取り組んでいます
私は、uniformMatrix2fv、uniformMatrix3fv、uniformMatrix4fv、およびframebufferRenderbuffer、framebufferTexture2D、renderbufferStorageで作業します。
より要求の厳しいwebglデモを実行し、サーボのパフォーマンスを測定します。これらの関数が必要です;)
@MortimerGoro私はFBOサポートに取り組んできました(最近のいくつかのマージとhttps://github.com/anholt/servo/tree/webgl-fboを参照してください)。 また、ユニフォームマトリックス用にhttps://github.com/anholt/servo/tree/webgl-uniform-matrix-vをまとめましたが、テストをデバッグする必要があります。
@anholt素晴らしい! ユニフォームマトリックステストについてサポートが必要ですか?
@MortimerGoroは、信頼できない結果で何が起こっているのかを理解しているだけです。
FBOサポートを追跡するために#13639を開きました。 それをframebufferRenderbuffer / framebufferTexture2Dに追加したいですか?
@ shravan-acharは、ここで残りのものに取り組むことに興味があるかもしれません。
WebGLのtoDataURL()
誤解が、テストケースの問題がたくさん残っている原因のようです( asin_001_to_006.html
)
現在、不足しているAPIは5つだけです。
私は、多気JARO、@mrowqaと@xanewok @学生プロジェクトとして、この問題に取り組みます
cc @KiChjang
glGetTexParameterを試す予定です。
getFramebufferAttachmentParameter()
取り組んでいます。
getRenderbufferParameter
をやりたい
この問題は、何らかの理由で編集の記録を保持しなくなったようです。
編集:それは今働いているようです。
たくさんの問題を追加しました。
最も参考になるコメント
glGetTexParameterを試す予定です。