์ด๊ฒ์ ๋ฉํ ๋ฒ๊ทธ๋ก ์๋๋์์ต๋๋ค.
๋๋จธ์ง ๋ฐฉ๋ฒ ์ค ์ผ๋ถ์ ์ฐจ๋จ https://github.com/servo/servo/issues/5014 (์์ ๊ฒ๋ค ArrayBufferView
๋๋ BufferDataSource
์ ๋ฌด์๊ฐ) ์์ง๋ง, ์ผ๋ถ ๋ค๋ฅธ ์ฌ๋์ด ๋ ์ ์์ต๋๋ค ๋ฌธ์ ์์ด ๊ตฌํ๋์์ต๋๋ค.
๊ทธ ์ค ์ผ๋ถ๋ E-Easy
์ ์์ผ๋ฏ๋ก ๋๋จธ์ง ๊ฐ ๊ฒฐํ์ ๋ํด ๊ฐ๋ณ ๋ฌธ์ ๋ฅผ ์ ์ถํ๋ ค๊ณ ํฉ๋๋ค.
ํ์ฅํ๋ ค๋ฉด ํด๋ฆญ
WebGL 1.0 ์ฌ์์ ์ฌ๊ธฐ์ ์์ต๋๋ค .
WebGL์ GLES 2.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 ์ ์ ๋ฐ ๋ช
๋ น ๊ตฌํ์ webrender_traits
์ webgl.rs
file ์ ์์ผ๋ฏ๋ก Servo์ WebRender์์ ๊ณต์ ํ ์ ์์ต๋๋ค.
WebGLCommand
์ ์ ์ apply
ํจ์๋ฅผ ์ดํด๋ณด๊ณ ์ถ์ ๊ฒ์
๋๋ค.
์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด Cargo override ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
WebGLCommand
๋ ๋ ๊ฑฐ์ ์ด์ ๋ก canvas_traits
์์ CanvasWebGLMessage
๋ก ๋ค์ ๋ด๋ณด๋ด์ง๋๋ค (webrender๊ฐ ์์ง ๋ณํฉ๋์ง ์์ ๋์ ์ถ๊ฐ rebase ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด).
gl.shaderSource()
์ ๋ฌ๋ ์์ค ๊ฒ์ฆ(#21754)antialiasing
์ WebGL ์ปจํ
์คํธ ์ต์
์ง์(#21285)ImageBitmap
๊ตฌํ(#20650)WebGLRenderingContext.bufferSubData
์ค๋ฒํ๋ก๋ฅผ ์ ์ ํ ๋ฐฉ์ดํฉ๋๋ค(#20558).[AllowShared]
์ ๋๋ก ์ง์ (#20515)drawingBufferWidth
/ drawingBufferHeight
in 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
ํจ๋(#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
์์
์ ํ๊ณ ์๋ค๋ ๊ฒ์ ๋์น์ฑ์ง ๋ชปํด์ ์ฃ์กํฉ๋๋ค. 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
ํ๊ณ ์ถ์ด์
์ด ๋ฌธ์ ๋ ์ด๋ค ์ด์ ๋ก ๋ ์ด์ ํธ์ง ๊ธฐ๋ก์ ์ ์งํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํธ์ง: ์ง๊ธ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
glGetTexParameter๋ฅผ ์๋ํ ๊ณํ์ ๋๋ค.