Servo: WebGL 1.0์„ ์™„์ „ํžˆ ๊ตฌํ˜„

์— ๋งŒ๋“  2016๋…„ 03์›” 26์ผ  ยท  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

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 ์Šค๋ ˆ๋“œ

WebGL ์Šค๋ ˆ๋“œ๋Š” DOM์—์„œ WebGL ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ WebRender ๋ฐฑ์—”๋“œ๋กœ ์ „๋‹ฌํ•˜๋Š” ์Šค๋ ˆ๋“œ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ๊ฑด๋“œ๋ฆด ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ์‚ดํŽด๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • components/canvas/webgl_paint_thread.rs

WebGL ๋ช…๋ น ์ •์˜, ์‹คํ–‰ ๋ฐ ๊ธฐํƒ€ ์œ ํ˜•

๋‚˜๋จธ์ง€ WebGL ์ •์˜ ๋ฐ ๋ช…๋ น ๊ตฌํ˜„์€ webrender_traits ์˜ webgl.rs file ์— ์žˆ์œผ๋ฏ€๋กœ Servo์™€ WebRender์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WebGLCommand ์ •์˜ ์™€ apply ํ•จ์ˆ˜๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Cargo override ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

WebGLCommand ๋Š” ๋ ˆ๊ฑฐ์‹œ ์ด์œ ๋กœ canvas_traits ์—์„œ CanvasWebGLMessage ๋กœ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค (webrender๊ฐ€ ์•„์ง ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ๋™์•ˆ ์ถ”๊ฐ€ rebase ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด).

์•ˆ์ „ ์ ๊ฒ€ ๋ˆ„๋ฝ

  • [ ] "ํ™œ์„ฑํ™”๋œ ์ •์  ์†์„ฑ ๋ฐ ๋ฒ”์œ„ ๊ฒ€์‚ฌ"๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(#20599).
  • [ ] ๋ชจ๋“  GLSL ์ œ์•ฝ ์กฐ๊ฑด์„ ์ œ๋Œ€๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ํ™•์ธ(#20601)
  • [ ] "Cube Map Framebuffer Attachments์˜ ์™„์ „์„ฑ"์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„(#20654)
  • [ ] ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„์— ๋Œ€ํ•œ WebGL ๊ฒ€์‚ฌ ๊ตฌํ˜„(#21288)
  • [ ] ์Šคํ…์‹ค ๊ฒ€์‚ฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค(#20555).
  • [ ] ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํ…์Šค์ฒ˜๋ฅผ ํˆฌ๋ช… ๋ธ”๋ž™์œผ๋กœ ์ดˆ๊ธฐํ™”(#21716)
  • [ ] gl.shaderSource() ์ „๋‹ฌ๋œ ์†Œ์Šค ๊ฒ€์ฆ(#21754)

๋ณด๋ฅ˜ ์ค‘์ธ ๊ตฌํ˜„

  • [ ] antialiasing ์˜ WebGL ์ปจํ…์ŠคํŠธ ์˜ต์…˜ ์ง€์›(#21285)
  • [ ] WebGL ์ปจํ…์ŠคํŠธ ์‚ญ์ œ ๋ฐ ์žฌ์ƒ์„ฑ ์ง€์›(#15266)
  • [ ] WebGL์—์„œ ์••์ถ• ํ…์Šค์ฒ˜ ๊ตฌํ˜„(#20594)
  • [ ] WebGL ์บ”๋ฒ„์Šค๋ฅผ 2D ์บ”๋ฒ„์Šค์— ๊ทธ๋ฆฌ๊ธฐ ๊ตฌํ˜„(#21556)
  • [ ] ImageBitmap ๊ตฌํ˜„(#20650)
  • [ ] ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์š”์ฒญํ•œ ๊ฒƒ๋ณด๋‹ค ์ž‘์€ ํฌ๊ธฐ์˜ ๊ทธ๋ฆฌ๊ธฐ ๋ฒ„ํผ ์ƒ์„ฑ(#21718)
  • [ ] WebGL ์บ”๋ฒ„์Šค๋Š” ์ „์ฒด ํ™”๋ฉด์œผ๋กœ ๋งŒ๋“ค ๋•Œ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค(#21290).
  • [ ] WebGLRenderingContext.bufferSubData ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์ ์ ˆํžˆ ๋ฐฉ์–ดํ•ฉ๋‹ˆ๋‹ค(#20558).

๊ธฐํƒ€ ๋ณด๋ฅ˜ ์ค‘์ธ ์‚ฌํ•ญ ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ

  • [ ] WebGL ์ปจํ…์ŠคํŠธ ๊ฒฌ๊ณ ์„ฑ์— ๋Œ€ํ•œ Firefox ์ง€์‹ ํ›”์น˜๊ธฐ(#21144)
  • [ ] WebIDL ํ™•์žฅ ์†์„ฑ [AllowShared] ์ œ๋Œ€๋กœ ์ง€์› (#20515)
  • [ ] ์บ์‹œ drawingBufferWidth / drawingBufferHeight in WebGLRenderingContext (#20530)
  • [ ] WebGLRenderingContext.getContextAttributes ์˜ ์บ์‹œ ๊ฒฐ๊ณผ(#20532)
  • [ ] WebGLRenderingContext.bufferData ์— ๋นˆ ๋ฒ„ํผ๋ฅผ ํ• ๋‹นํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. (#20557)
  • [ ] WebGL ํ…์Šค์ฒ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๊ฐ„์ ‘ ์ฐธ์กฐ ์ œ๊ฑฐ(#20596)
  • [ ] WebGL ํ™•์žฅ ์ธํ”„๋ผ ์ •๋ฆฌ(#20642)
  • [ ] WebGL์— ํŠน์ •ํ•œ ์ƒˆ๋กœ์šด ์ž‘์—… ์†Œ์Šค๋ฅผ ๋„์ž…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(#20643).
  • [ ] WebGL์šฉ Khronos ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์ŠคํŠธ ์ด๋ฆ„์— ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค(#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] framebufferRenderbuffer ๊ตฌํ˜„(#13639)
  • [x] framebufferTexture2D ๊ตฌํ˜„(#13639)
  • [x] generateMipmap ๊ตฌํ˜„(#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] ์ƒ˜ํ”Œ ์ ์šฉ ๋ฒ”์œ„ ๊ตฌํ˜„
  • [x] stencilFunc ๊ตฌํ˜„(#10659)
  • [x] stencilFuncSeparate ๊ตฌํ˜„(#10659)
  • [x] stencilMask ๊ตฌํ˜„(#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] validateProgram ๊ตฌํ˜„(#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 ์†Œ๋ฉธ์ž๊ฐ€ webgl ํŽ˜์ด์ง€๋ฅผ ๋‹ซ์„ ๋•Œ ์ž์ฃผ ์ฃผ์žฅํ•จ (#21177)
  • [x] ๋™์ผํ•œ ํŽ˜์ด์ง€์— WebGLRenderingContext ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • [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] ์ตœ๋Œ€ ๋ Œ๋” ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๋ Œ๋” ๋ฒ„ํผ ์Šคํ† ๋ฆฌ์ง€ ํ™•์ธ(#21485)
  • [x] gl-pointcoord.html ๋Š” ์•„๋ฌด๊ฒƒ๋„ ๊ทธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค(#21719)
  • [x] ๋ฐ์Šคํฌํ†ฑ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•  ๋•Œ GL ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ oes-texture-half-float.html ํŒจ๋‹‰(#21663)
  • [x] Image2D ๋ฉ”์„œ๋“œ์—์„œ ๊ตฌ์„ฑ ์š”์†Œ ๊ฒ€์‚ฌ ๊ตฌํ˜„(#20595)
  • [x] preserveDrawingBuffer ์˜ WebGL ์ปจํ…์ŠคํŠธ ์˜ต์…˜ ์ง€์›(#21132)
A-contenwebgl B-meta

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

glGetTexParameter๋ฅผ ์‹œ๋„ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  40 ๋Œ“๊ธ€

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 ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. WebGL์˜ ๊ตฌํ˜„์„ ๋•๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•„์ง ์ž‘์—… ์ค‘์ด๋ผ๋ฉด copyTexImage2D ๋ฐ copyTexSubImage2D @emilio๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@daoshengmu ๋ฌธ์ œ์—†์–ด์š”! ์™„์ „ํžˆ ๊ดœ์ฐฎ์•„! PR์„ ๋ฐ›๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์€ ์ œ ์ž˜๋ชป์ด์ง€๋งŒ, ์ธ์ƒ์€ ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค: ์Šค๋งˆ์ผ:...

texSubImage2D ๋ฐ›์•„๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๊นŒ? wr_traits ์— ๊ตฌ์„ฑ ์š”์†Œ ๋ฅผ ์ด๋ฏธ copyTex* ๋Œ€ํ•œ PR์ด ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ texSubImage2D ์—์„œ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. texSubImage2D ๋ฅผ ์›ํ•˜์‹œ๋ฉด ๊ฐ€์„ธ์š”! ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ํŠน๋ณ„ํ•œ ์• ์ฐฉ์ด ์—†์Šต๋‹ˆ๋‹ค. webgl ์ฝ”๋“œ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋ฐฐ์šฐ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค...

@danlrobertson ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. texSubImage2D ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”! ๐Ÿ˜„

๊ดœ์ฐฎ์œผ์‹œ๋‹ค๋ฉด ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค
Implement isFramebuffer
๊ทธ๋ฆฌ๊ณ 
Implement isRenderBuffer

@DDEFISHER ํž˜๋‚ด์„ธ์š” ! ๋‚ด๊ฐ€ ๊ฑฐ๊ธฐ์— ๋‹น์‹ ์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ทธ ๋ฌธ์ œ๋ฅผ ์—ด์–ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‹ค๋ฅธ 2์™€ ๋น„์Šทํ•˜๊ธฐ ๋•Œ๋ฌธ์— isBuffer ๋„ ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ์˜๊ฒฌ์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ฐœ๋ณ„ API์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ๋ฌธ์ œ๋Š” E-easy ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. ์ด๊ฑด ์•„๋‹ˆ์•ผ.

๋ˆ„๊ตฌ๋“ ์ง€ ๋‚ด๊ฐ€ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” E-easy(ish) ๊ตฌํ˜„์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š” :)

enable ๋ฐ disable ๊ฐ€ ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ @ofekd isEnabled ๊ฐ€ ์ข‹์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

@jdm ๋‚ด๊ฐ€ ๊ฐ€์ ธ๊ฐˆ๊ฒŒ

@ofekd isEnabled๋Š” ๋ชจ๋“ˆ ๊ฐ„์— ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ๊ธฐ์—ฌ์ž๋กœ์„œ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ผํ•ฉ func ๋˜๋Š” stencil func์™€ ๊ฐ™์€ 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 ์ฐธ์กฐ). ๋˜ํ•œ uniformmatrix์— ๋Œ€ํ•ด https://github.com/anholt/servo/tree/webgl-uniform-matrix-v ๋ฅผ ๊ตฌ์„ฑํ–ˆ์ง€๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋””๋ฒ„๊น…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@anholt ๊ต‰์žฅํ•ด! Uniformmatrix ํ…Œ์ŠคํŠธ์— ๋„์›€์ด ํ•„์š”ํ•˜์‹ญ๋‹ˆ๊นŒ?

@MortimerGoro ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฐ๊ณผ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

FBO ์ง€์›์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด #13639๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. framebufferRenderbuffer/framebufferTexture2D์— ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@shravan-achar๋Š” ์—ฌ๊ธฐ์—์„œ ๋‚˜๋จธ์ง€ ์ž‘์—…์— ๊ด€์‹ฌ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WebGL์— ๋Œ€ํ•œ toDataURL() ๋ˆ„๋ฝ์ด ๋‚จ์•„ ์žˆ๋Š” ๋งŽ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ฌธ์ œ์˜ ์›์ธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(์˜ˆ asin_001_to_006.html ).

์ด์ œ 5๊ฐœ์˜ ๋ˆ„๋ฝ๋œ API๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €, @taki-jaro, @mrowqa ๋ฐ @xanewok ์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•™์ƒ ํ”„๋กœ์ ํŠธ๋กœ
cc @KiChjang

glGetTexParameter๋ฅผ ์‹œ๋„ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

getFramebufferAttachmentParameter() ์ž…๋‹ˆ๋‹ค.

getRenderbufferParameter ํ•˜๊ณ  ์‹ถ์–ด์š”

์ด ๋ฌธ์ œ๋Š” ์–ด๋–ค ์ด์œ ๋กœ ๋” ์ด์ƒ ํŽธ์ง‘ ๊ธฐ๋ก์„ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์ง€๊ธˆ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰