Servo: تطبيق WebGL 1.0 بالكامل

تم إنشاؤها على ٢٦ مارس ٢٠١٦  ·  40تعليقات  ·  مصدر: servo/servo

يُقصد بهذا أن يكون خطأً تعريفًا.

بعض الطرق المتبقية محظورة على https://github.com/servo/servo/issues/5014 (تلك التي تتلقى ArrayBufferView أو BufferDataSource ولها تجاوزات) ، لكن البعض الآخر يمكن أن يكون نفذت دون مشاكل.

سأحاول تقديم مشكلات فردية لكل نقص متبقي ، نظرًا لأن بعضها يمكن أن يكون E-Easy .

معلومات عامة عن أخطاء WebGL

انقر فوق لتوسيع

المواصفات

مواصفات WebGL 1.0 هنا .

المواصفات GLES 2.0

يعتمد WebGL على مواصفات GLES 2.0 ، لذلك غالبًا ما تستفيد مواصفات WebGL من التفاصيل. يمكنك العثور على نسخة PDF هنا .

الكود الحالي

DOM

يمكن العثور على جانب DOM من كود WebGL في الملفات التالية:

  • 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

مؤشر ترابط WebGL هو الخيط الذي يتلقى رسائل WebGL من DOM ، ويقوم إما بتنفيذها أو إرسالها إلى الواجهة الخلفية لـ WebRender.

ربما لا تحتاج إلى لمس أي شيء هنا ، ولكن في حالة رغبتك في إلقاء نظرة ، يكون الملف:

  • components/canvas/webgl_paint_thread.rs

تعريف أوامر WebGL وتنفيذها وأنواع أخرى

باقي تعريفات WebGL وتطبيقات الأوامر موجودة في ملف webrender_traits webgl.rs ، ليتم مشاركتها بواسطة كل من Servo و WebRender.

فأنت تريد أن نلقي نظرة إلى WebGLCommand تعريف وإلى apply وظيفة .

للعمل بنشاط معها ، من الأفضل استخدام تجاوز الشحن .

لاحظ أنه تمت إعادة تصدير WebGLCommand من canvas_traits كـ CanvasWebGLMessage لأسباب قديمة (لتجنب ألم إعادة الأساسيات الإضافية بينما لم يتم دمج webrender بعد).

فحوصات السلامة مفقودة

  • [] التنفيذ الصحيح لـ "تمكين السمات الرأسية وفحص النطاق" (# 20599)
  • [] تحقق من أننا ننفذ جميع قيود GLSL بشكل صحيح (# 20601)
  • [] تنفيذ "اكتمال مرفقات مخزن إطارات خريطة المكعب" بشكل صحيح (# 20654)
  • [] تنفيذ فحوصات WebGL مقابل حلقات التعليقات (# 21288)
  • [] تنفيذ اختبارات الاستنسل بشكل صحيح (# 20555)
  • [] تهيئة الزخارف إلى الأسود الشفاف في بعض الحالات (# 21716)
  • [] تم تمرير التحقق من صحة المصدر إلى gl.shaderSource() (# 21754)

عمليات التنفيذ المعلقة

  • [] دعم خيار سياق WebGL antialiasing (# 21285)
  • [] دعم تجاهل وإعادة إنشاء سياقات WebGL (# 15266)
  • [] تنفيذ مواد مضغوطة في WebGL (# 20594)
  • [] تنفيذ رسم لوحة WebGL في لوحة قماشية ثنائية الأبعاد (# 21556)
  • [] تنفيذ ImageBitmap (# 20650)
  • [] إنشاء مخزن مؤقت للرسم أصغر من المطلوب عند الضرورة (# 21718)
  • [] يتم تغيير حجم لوحة WebGL عند وضع ملء الشاشة (# 21290)
  • [] دافع بشكل صحيح ضد الفيضانات في WebGLRenderingContext.bufferSubData (# 20558)

أشياء أخرى معلقة والتحسينات

  • [] سرقة معلومات Firefox حول متانة سياق WebGL (# 21144)
  • [] دعم سمة WebIDL الموسعة بشكل صحيح [AllowShared] (# 20515)
  • [] ذاكرة التخزين المؤقت drawingBufferWidth / drawingBufferHeight في WebGLRenderingContext (# 20530)
  • [] نتيجة ذاكرة التخزين المؤقت لـ WebGLRenderingContext.getContextAttributes (# 20532)
  • [] لا تخصص مخزنًا مؤقتًا فارغًا مقابل أي شيء في WebGLRenderingContext.bufferData (# 20557)
  • [] إزالة المراوغات لمعلمات نسيج WebGL (# 20596)
  • [] تنظيف البنية الأساسية لملحق WebGL (# 20642)
  • [] ربما يتم تقديم مصدر مهام جديد خاص بـ WebGL (# 20643)
  • [] لا ينبغي أن تستخدم اختبارات Khronos لـ WebGL فهرسًا في اسم الاختبار (# 20668)
  • [] لا يتم تطبيق [Throws] لكل حمل زائد (# 20516)
  • [] تعطل عند تحميل أداة تظليل على html5test.com (# 21191)
  • [] عرض WebGL المائي لا يعرض أي شيء (# 21173)
  • [] أبلغ Firefox عن حدود أكبر "لمتجهات متغيرة بحد أقصى" و "مخزن ألوان أقصى" و "وحدات نسيج مجمعة بحد أقصى" من Servo (# 21172)
  • [] التحقيق في التطبيقات الحقيقية المستندة إلى webgl (# 21151)
  • [] إنشاء ملف تعريف WebGL (# 21150)

الأشياء التي تم القيام بها

  • [x] تحقق من وجود أحرف غير صالحة في موقع WebGL وأسماء السمات (# 21287)
  • [x] تدقيق سلوك WebGLRenderingContext.getProgramInfoLog (# 20561)
  • [x] ربما يكون handle_object_deletion خطأ (# 21352)
  • [x] مسح الإطارات المخزنة مؤقتًا عند تهيئة لوحة WebGL وتغيير حجمها (# 21475)
  • [x] دعم النقابات كمعامل WebIDL المميز (# 20513)
  • [x] تنفيذ التحميل الزائد texImage2D المعلق (# 10443)
  • [x] تنفيذ copyTexImage2D (# 11147)
  • [x] تنفيذ copyTexSubImage2D (# 11147)
  • [x] تنفيذ detachShader (# 10215)
  • [x] إنهاء الأداة (# 10212 ، # 10215)
  • [x] تنفيذ التدفق (# 10213 ، # 10215)
  • [x] تنفيذ برنامج عارض الإطارات (frameebufferRenderbuffer) (# 13639)
  • [x] تنفيذ FramebufferTexture2D (# 13639)
  • [x] تنفيذ إنشاء خريطة صغيرة (# 10215)
  • [x] تنفيذ getActiveAttrib (# 10379)
  • [x] تنفيذ getActiveUniform (# 10397)
  • [x] تنفيذ getAttachedShaders (# 20411)
  • [x] تنفيذ getFramebufferAttachmentParameter (# 20317)
  • [x] تنفيذ getProgramInfoLog (# 13199)
  • [x] تنفيذ getRenderbufferParameter (# 20514)
  • [x] تنفيذ getTexParameter (# 20144)
  • [x] تنفيذ تنسيق getShaderPrecisionFormat (# 16544)
  • [x] تنفيذ getUniform (# 21202)
  • [x] تنفيذ getVertexAttrib
  • [x] تنفيذ getVertexAttribOffset (# 16893)
  • [x] تنفيذ isBuffer (# 11357)
  • [x] تطبيق isEnabled (# 13040)
  • [x] تنفيذ isFramebuffer (# 11357)
  • [x] تنفيذ isRenderBuffer (# 11357)
  • [x] تنفيذ isShader (# 11072)
  • [x] تنفيذ isTexture (# 11072)
  • [x] تنفيذ readPixels (# 10668)
  • [x] تنفيذ renderbufferStorage (# 13872)
  • [x] تنفيذ sampleCoverage
  • [x] تنفيذ stencilFunc (# 10659)
  • [x] تنفيذ stencilFuncSeparate (# 10659)
  • [x] تنفيذ قناع استنسل (# 10659)
  • [x] تنفيذ stencilMaskSeparate (# 10659)
  • [x] تنفيذ stencilOp (# 10659)
  • [x] تنفيذ stencilOpSeparate (# 10659)
  • [x] تنفيذ texSubImage2D (# 11168)
  • [x] تنفيذ uniform1i (# 10417)
  • [x] تنفيذ uniform1iv (# 10417)
  • [x] تنفيذ uniform2f (# 10356)
  • [x] تنفيذ uniform2fv (# 10417)
  • [x] تنفيذ uniform2i (# 10417)
  • [x] تنفيذ uniform2iv (# 10417)
  • [x] تنفيذ uniform3f (# 10417)
  • [x] تنفيذ uniform3fv (# 10417)
  • [x] تنفيذ uniform3i (# 10417)
  • [x] تنفيذ uniform3iv (# 10417)
  • [x] تنفيذ uniform4i (# 10368)
  • [x] تنفيذ uniform4iv (# 10368)
  • [x] تنفيذ uniformMatrix2fv (# 10671)
  • [x] تنفيذ uniformMatrix3fv (# 10671)
  • [x] تنفيذ uniformMatrix4fv (# 10671)
  • [x] تنفيذ برنامج التحقق من الصحة (# 13199)
  • [x] تحقق بشكل صحيح من الحد في WebGLRenderingContext.activeTexture (# 20531)
  • [x] تنفيذ gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE) (# 20535)
  • [x] تنفيذ gl.getParameter(gl.BLEND_COLOR) (# 20536)
  • [x] تنفيذ gl.getParameter(gl.COLOR_CLEAR_VALUE) (# 20537)
  • [x] تنفيذ gl.getParameter(gl.COLOR_WRITEMASK) (# 20538)
  • [x] تنفيذ gl.getParameter(gl.COMPRESSED_TEXTURE_FORMATS) (# 20544)
  • [x] تنفيذ gl.getParameter(gl.DEPTH_RANGE) (# 20545)
  • [x] تنفيذ gl.getParameter(gl.GENERATE_MIPMAP_HINT) (# 20546)
  • [x] دعم IMPLEMENTATION_COLOR_READ_FORMAT و IMPLEMENTATION_COLOR_READ_TYPE (# 20547)
  • [x] دعم MAX_FRAGMENT_UNIFORM_VECTORS و MAX_VERTEX_UNIFORM_VECTORS (# 20548)
  • [x] تنفيذ gl.getParameter(gl.MAX_VARYING_VECTORS) (# 20549)
  • [x] دعم SCISSOR_TEST و SCISSOR_BOX (# 20551)
  • [x] تنفيذ gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL) (# 20552)
  • [x] تنفيذ gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL) (# 20553)
  • [x] تنفيذ gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL) (# 20554)
  • [x] التنفيذ الصحيح للشيكات WebGLRenderingContext.bindBuffer (# 20556)
  • [x] تنفيذ الشيكات بشكل صحيح gl.renderbufferStorage (# 20563)
  • [x] تدقيق الشيكات WebGLRenderingContext.getFramebufferAttachmentParameter (# 20593)
  • [x] تحقق بشكل صحيح من وسيطة WebGLRenderingContext.clear (# 20623)
  • [x] تحقق مما إذا كنا نربط GLclampf بشكل صحيح (# 20652)
  • [x] إرجاع الأنواع الصحيحة بـ gl.getParameter والأصدقاء (# 20655)
  • [x] تحقق بشكل صحيح من أن كائنات WebGL تم تمريرها إلى سياق WebGL الصحيح (# 21133)
  • [x] تنفيذ فحص الاسم المستعار للسمات في WebGL (# 21136)
  • [x] إصلاح تسرب البيانات غير المهيأ من renderbufferStorage (# 13710)
  • [x] يؤكد WebGLShader destruction بشكل متكرر عند إغلاق صفحات webgl (# 21177)
  • [x] أعد التحقق من عمليات التحقق الخاصة بنا عندما يكون هناك العديد من WebGLRenderingContext s في نفس الصفحة.
  • [x] إنشاء اختبارات للتغييرات في # 20598 (# 20607)
  • [x] اجعل عمليات التحقق من الصحة مكتوبة بشدة (# 10693)
  • [x] إزالة المراوغات لبعض معلمات WebGL (# 20550)
  • [x] إيقاف إعادة تصدير WebGLCommand كـ CanvasWebGLMessage (https://github.com/servo/servo/issues/10211)
  • [x] قم بتحديث تبعية الزاوية
  • [x] الاختبار باستخدام مجموعة اختبار التوافق مع WebGL (# 10373)
  • [x] تحديث تفسيرنا للمواصفات لتتناسب مع محركات المتصفح الأخرى (# 8753)
  • [x] ذاكرة التخزين المؤقت التي تم تمكين إمكانيات GL من جانب الخادم (# 20534)
  • [x] إزالة المراوغات لمعلمات برنامج WebGL (# 20560)
  • [x] إزالة المراوغات لمعلمات تظليل WebGL (# 20562)
  • [x] تدقيق أنه تم تحديث حالة الإطارات الاحتياطية بشكل صحيح في WebGL (# 20570)
  • [x] تخزين المعلومات المطلوبة مؤقتًا مقابل gl.getActiveAttrib و gl.getActiveUniform (# 20600)
  • [x] معلومات ذاكرة التخزين المؤقت مطلوبة gl.getVertexAttrib و gl.getVertexAttribOffset (# 20608)
  • [x] ضع علامة على اللوحة القماشية على أنها متسخة فقط في حالة عدم ربط مخزن الإطارات المؤقت (# 21691)
  • [x] تحقق مما إذا كان تخزين Renderbuffer يتجاوز الحد الأقصى لحجم Renderbuffer (# 21485)
  • [x] gl-pointcoord.html لا يرسم أي شيء (# 21719)
  • [x] oes-texture-half-float.html ذعر بسبب خطأ GL عند التشغيل في وضع سطح المكتب (# 21663)
  • [x] تنفيذ فحص المكون في أساليب Image2D (# 20595)
  • [x] دعم خيار سياق WebGL preserveDrawingBuffer (# 21132)
A-contenwebgl B-meta

التعليق الأكثر فائدة

أخطط لمحاولة glGetTexParameter.

ال 40 كومينتر

سي سيdmarcos

سأعمل على تنفيذ إنشاء خريطة صغيرة

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 . أريد فقط المساعدة في تنفيذ بعض WebGL. إذا كنت لا تزال تعمل عليه ، فيمكنني اختيار copyTexImage2D و copyTexSubImage2D emilio

تضمين التغريدة كل شيء على ما يرام! إنه لأمر سيئ أن استغرقت وقتًا طويلاً للحصول على علاقات عامة ، لكن للأسف الحياة تحدث: ابتسم: ...

هل أنت بخير مع أخذ texSubImage2D ؟ لقد قمت بالفعل بتنفيذ المكونات الضرورية في copyTex* ، لكنني في الواقع لم أبدأ بـ texSubImage2D . إذا كنت تريد texSubImage2D ، فابحث عنه! ليس لدي أي ارتباط خاص به. أردت فقط معرفة القليل عن كود webgl ...

تضمين التغريدة سوف آخذ texSubImage2D . شكرا! 😄

إذا كان الأمر على ما يرام ، فسأعمل عليه
Implement isFramebuffer
و
Implement isRenderBuffer

DDDEFISHER اذهب لذلك! هل تمانع في فتح قضية لهؤلاء حتى أتمكن من تعيينك هناك؟

سأعمل أيضًا على isBuffer لأنه مشابه للآخر 2

يرجى كتابة تعليق هنا إذا كنت تنوي العمل على هذه المسألة. شكرا لك!

تعد المشكلات المنفصلة لواجهات برمجة التطبيقات الفردية مادة سهلة الاستخدام ؛ ليس هذا.

هل يمكن لأي شخص أن يشير إلى تطبيق E-easy (ish) يمكنني العمل عليه؟ شكرا :)

ofekd isEnabled قد يكون اختيارًا جيدًا ، حيث تم تنفيذ enable و disable !

jdm سآخذها

قد يكون ofekd isEnabled صعبًا كمساهم جديد ، لأنك تحتاج إلى تغيير الأشياء عبر الوحدات. يجب أن تكون بعض حالات الاختبار في webgl-specific.html ، مثل func func أو stencil func ، نقاط انطلاق جيدة حقًا. 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 للحصول على مصفوفة موحدة ، لكن الاختبار يحتاج إلى تصحيح الأخطاء.

تضمين التغريدة هل تحتاج إلى أي مساعدة في اختبار المصفوفة الموحدة؟

MortimerGoro مجرد اكتشاف ما يحدث مع النتائج غير الموثوقة.

لقد فتحت # 13639 لتتبع دعم FBO. تريد أن تضيف ذلك إلى FramebufferRenderbuffer / framebufferTexture2D؟

@ shravan-achar قد يكون مهتمًا بالعمل على الباقي هنا.

يبدو أن misisng toDataURL() لـ WebGL هو سبب مجموعة كاملة من مشكلات حقيبة الاختبار المتبقية (مثل asin_001_to_006.html )

فقط 5 واجهات برمجة تطبيقات مفقودة الآن.

أنا و @ taki-jaro و mrowqa و xanewok سيعملون على هذه المسألة كمشروع طلابي
ccKiChjang

أخطط لمحاولة glGetTexParameter.

العمل على getFramebufferAttachmentParameter() .

أود أن أفعل getRenderbufferParameter

يبدو أن هذه المشكلة لم تعد تحتفظ بسجل للتعديلات بعد الآن لسبب ما.

تحرير: يبدو أنه يعمل الآن.

لقد أضفت مجموعة من القضايا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات