@flighthq/render-gl 0.2.0 → 0.2.1-next.410.a23f189
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/glCompressedTexture.d.ts +8 -0
- package/dist/glCompressedTexture.d.ts.map +1 -0
- package/dist/glCompressedTexture.js +270 -0
- package/dist/glCompressedTexture.js.map +1 -0
- package/dist/glDraw.d.ts +4 -2
- package/dist/glDraw.d.ts.map +1 -1
- package/dist/glDraw.js +215 -20
- package/dist/glDraw.js.map +1 -1
- package/dist/glFullscreenPass.d.ts.map +1 -1
- package/dist/glFullscreenPass.js +32 -0
- package/dist/glFullscreenPass.js.map +1 -1
- package/dist/glLinearToSrgbPass.d.ts +4 -0
- package/dist/glLinearToSrgbPass.d.ts.map +1 -0
- package/dist/glLinearToSrgbPass.js +42 -0
- package/dist/glLinearToSrgbPass.js.map +1 -0
- package/dist/glPresentRenderTarget.d.ts +3 -0
- package/dist/glPresentRenderTarget.d.ts.map +1 -0
- package/dist/glPresentRenderTarget.js +35 -0
- package/dist/glPresentRenderTarget.js.map +1 -0
- package/dist/glRenderPass.d.ts +5 -0
- package/dist/glRenderPass.d.ts.map +1 -0
- package/dist/glRenderPass.js +130 -0
- package/dist/glRenderPass.js.map +1 -0
- package/dist/glRenderState.d.ts +1 -1
- package/dist/glRenderState.d.ts.map +1 -1
- package/dist/glRenderState.js +1 -0
- package/dist/glRenderState.js.map +1 -1
- package/dist/glRenderTarget.d.ts +2 -15
- package/dist/glRenderTarget.d.ts.map +1 -1
- package/dist/glRenderTarget.js +48 -57
- package/dist/glRenderTarget.js.map +1 -1
- package/dist/glRenderTargetPool.d.ts.map +1 -1
- package/dist/glRenderTargetPool.js +4 -0
- package/dist/glRenderTargetPool.js.map +1 -1
- package/dist/glSkinPaletteTexture.d.ts +5 -0
- package/dist/glSkinPaletteTexture.d.ts.map +1 -0
- package/dist/glSkinPaletteTexture.js +42 -0
- package/dist/glSkinPaletteTexture.js.map +1 -0
- package/dist/glTestHelper.d.ts.map +1 -1
- package/dist/glTestHelper.js +1 -0
- package/dist/glTestHelper.js.map +1 -1
- package/dist/glTextureUpload.d.ts +5 -0
- package/dist/glTextureUpload.d.ts.map +1 -0
- package/dist/glTextureUpload.js +27 -0
- package/dist/glTextureUpload.js.map +1 -0
- package/dist/glTextureVideoUpload.d.ts +3 -0
- package/dist/glTextureVideoUpload.d.ts.map +1 -0
- package/dist/glTextureVideoUpload.js +24 -0
- package/dist/glTextureVideoUpload.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/src/glCompressedTexture.test.ts +276 -0
- package/src/glDraw.test.ts +319 -36
- package/src/glFullscreenPass.test.ts +22 -1
- package/src/glLinearToSrgbPass.test.ts +75 -0
- package/src/glPresentRenderTarget.test.ts +62 -0
- package/src/glReadback.test.ts +1 -0
- package/src/glRenderPass.test.ts +170 -0
- package/src/glRenderTarget.test.ts +63 -98
- package/src/glRenderTargetPool.test.ts +14 -0
- package/src/glSkinPaletteTexture.test.ts +129 -0
- package/src/glTextureUpload.test.ts +49 -0
- package/src/glTextureVideoUpload.test.ts +53 -0
package/dist/glDraw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glDraw.js","sourceRoot":"","sources":["../src/glDraw.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"glDraw.js","sourceRoot":"","sources":["../src/glDraw.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,iGAAiG;AACjG,iGAAiG;AACjG,4FAA4F;AAC5F,8EAA8E;AAC9E,8CAA8C;AAC9C,MAAM,UAAU,gBAAgB,CAAC,KAAoB,EAAE,SAA2B;IAChF,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,OAAO,CAAC,gBAAgB;QAAE,OAAO;IACnD,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,WAAW,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;IAC9G,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC;IACzD,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,sGAAsG;AACtG,sGAAsG;AACtG,yGAAyG;AACzG,oGAAoG;AACpG,yGAAyG;AACzG,0GAA0G;AAC1G,+FAA+F;AAC/F,MAAM,UAAU,0BAA0B,CACxC,KAAoB,EACpB,KAA8B,EAC9B,OAAsC;IAEtC,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAChD,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,EAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;IACvC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACpC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAChC,CAAC;IACD,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,oGAAoG;AACpG,mGAAmG;AACnG,sGAAsG;AACtG,qGAAqG;AACrG,iGAAiG;AACjG,sGAAsG;AACtG,uGAAuG;AACvG,iGAAiG;AACjG,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAC3B,KAAoB,EACpB,WAA8B,EAC9B,OAAsC;IAEtC,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,EAAE,CAAC,aAAa,EAAG,CAAC;QAC9B,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvC,4FAA4F;QAC5F,yFAAyF;QACzF,4FAA4F;QAC5F,8FAA8F;QAC9F,4FAA4F;QAC5F,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;QACxD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,WAA6B,CAAC,CAAC;QACnG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,+FAA+F;QAC/F,mGAAmG;QACnG,kGAAkG;QAClG,8FAA8F;QAC9F,oGAAoG;QACpG,yCAAyC;QACzC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC;IACnC,CAAC;IACD,qGAAqG;IACrG,8DAA8D;IAC9D,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uGAAuG;AACvG,4FAA4F;AAC5F,wGAAwG;AACxG,wGAAwG;AACxG,yGAAyG;AACzG,qGAAqG;AACrG,sGAAsG;AACtG,mGAAmG;AACnG,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAChC,KAAoB,EACpB,YAAoC,EACpC,OAAsC;IAEtC,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;IAC5D,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,EAAG,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9D,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;IACvC,sGAAsG;IACtG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,eAAe,GAAG,yBAAyB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC3F,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,IAAI,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;IAC5F,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;IAC7D,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,EAAG,CAAC;IACpC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/D,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/D,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;IACrE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;IACrE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAoB,EACpB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU;IAEV,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACjF,MAAM,CAAC,GAAG,cAAc,CAAC;IACzB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IACX,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACjD,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACxD,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC/B,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAoB;IAC3D,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACnC,KAAK,CAAC,cAAc,GAAG,gBAAgB,CAAC;AAC1C,CAAC;AAED,qGAAqG;AACrG,sGAAsG;AACtG,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB,CAAC,KAAoB,EAAE,SAAoB;IAC7E,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;AACrF,CAAC;AAED,sGAAsG;AACtG,sGAAsG;AACtG,yDAAyD;AACzD,MAAM,UAAU,2BAA2B,CAAC,KAAoB;IAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,sBAAsB;QAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1G,CAAC;AAED,iGAAiG;AACjG,sGAAsG;AACtG,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,SAAoB,EAAE,WAA+B;IAC7G,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,OAAO,CAAC,mBAAmB,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAoB,EACpB,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU;IAEV,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,qBAAqB,CACnB,KAAK,CAAC,EAAE,EACR,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,WAAW,EACnB,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACD,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EACpB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EACpB,OAAO,CAAC,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,OAAqB,EAAE,MAAyB;IACpG,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,kGAAkG;IAClG,8FAA8F;IAC9F,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC;IACjC,0EAA0E;IAC1E,0FAA0F;IAC1F,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;IACxD,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5E,kGAAkG;IAClG,iGAAiG;IACjG,2DAA2D;IAC3D,IAAI,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC;QAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAoB,EAAE,MAAuB;IACxE,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;IACvD,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;QACvC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC;IACnC,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,2GAA2G;AAC3G,yGAAyG;AACzG,uGAAuG;AACvG,0GAA0G;AAC1G,0GAA0G;AAC1G,2GAA2G;AAC3G,qGAAqG;AACrG,SAAS,sBAAsB,CAAC,KAAoB,EAAE,KAA8B;IAClF,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC1B,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;QACxD,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,MAAwB,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACrD,mGAAmG;QACnG,kGAAkG;QAClG,6FAA6F;QAC7F,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC;QACvF,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAK,CAAC;IAClG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,yGAAyG;AACzG,6FAA6F;AAC7F,SAAS,wBAAwB,CAAC,IAA8C;IAC9E,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAC7B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACrC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACrC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oGAAoG;AACpG,sGAAsG;AACtG,kGAAkG;AAClG,kGAAkG;AAClG,uGAAuG;AACvG,uGAAuG;AACvG,+DAA+D;AAC/D,SAAS,mBAAmB,CAC1B,KAAoB,EACpB,OAA6B,EAC7B,OAAqB,EACrB,OAAqC;IAErC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;QAC7D,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC/D,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC/D,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;QACrE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACzG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,GAAG,EAAE,CAAC;QACR,kGAAkG;QAClG,qDAAqD;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,OAAO,EAAgB,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC;AAED,sGAAsG;AACtG,kGAAkG;AAClG,wEAAwE;AACxE,SAAS,qBAAqB,CAC5B,KAAoB,EACpB,OAA6B;IAE7B,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;QAC9D,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC;QAC5B,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,8BAA8B,CAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sGAAsG;AACtG,2DAA2D;AAC3D,SAAS,gBAAgB,CAAC,EAA0B,EAAE,MAAqB;IACzE,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAC/D,CAAC;AAED,uGAAuG;AACvG,kGAAkG;AAClG,0FAA0F;AAC1F,SAAS,gBAAgB,CAAC,EAA0B,EAAE,MAAqB,EAAE,OAAgB;IAC3F,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;IAC3E,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,sBAAsB;YACzB,OAAO,EAAE,CAAC,oBAAoB,CAAC;QACjC,KAAK,uBAAuB;YAC1B,OAAO,EAAE,CAAC,qBAAqB,CAAC;QAClC,KAAK,uBAAuB;YAC1B,OAAO,EAAE,CAAC,qBAAqB,CAAC;QAClC,KAAK,wBAAwB;YAC3B,OAAO,EAAE,CAAC,sBAAsB,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,EAAE,CAAC,OAAO,CAAC;QACpB;YACE,OAAO,EAAE,CAAC,MAAM,CAAC;IACrB,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,6CAA6C;AAC7C,SAAS,gBAAgB,CAAC,MAAqB;IAC7C,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,CAAC;AACrD,CAAC;AAED,sGAAsG;AACtG,gGAAgG;AAChG,SAAS,kBAAkB,CAAC,EAA0B,EAAE,IAAiB;IACvE,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC;IACxC,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,EAAE,CAAC,eAAe,CAAC;IACxD,OAAO,EAAE,CAAC,aAAa,CAAC;AAC1B,CAAC;AAED,MAAM,YAAY,GAAuB,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC;AAEpF,8FAA8F;AAC9F,0GAA0G;AAC1G,kGAAkG;AAClG,yGAAyG;AACzG,uGAAuG;AACvG,yEAAyE;AACzE,MAAM,sBAAsB,GAA0D;IACpF,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAChE,gGAAgG;IAChG,kGAAkG;IAClG,gGAAgG;IAChG,+FAA+F;IAC/F,kEAAkE;IAClE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC;IACtE,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAChC,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC;CAC/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glFullscreenPass.d.ts","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAmB1F,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAatF;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAkBlH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,EACrC,WAAW,EAAE,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI,GACxF,IAAI,
|
|
1
|
+
{"version":3,"file":"glFullscreenPass.d.ts","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAmB1F,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAatF;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,GAAG,mBAAmB,CAkBlH;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,EACrC,WAAW,EAAE,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,KAAK,IAAI,GACxF,IAAI,CA+CN"}
|
package/dist/glFullscreenPass.js
CHANGED
|
@@ -75,14 +75,39 @@ export function drawGlFullscreenPass(state, program, inputs, dest, setUniforms)
|
|
|
75
75
|
}
|
|
76
76
|
gl.activeTexture(gl.TEXTURE0);
|
|
77
77
|
runtime.currentTexture = null;
|
|
78
|
+
gl.blendEquation(gl.FUNC_ADD);
|
|
78
79
|
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
79
80
|
runtime.currentBlendMode = null;
|
|
80
81
|
setUniforms(gl, program);
|
|
81
82
|
drawGlFullscreenQuad(state, program);
|
|
83
|
+
gl.blendEquation(gl.FUNC_ADD);
|
|
84
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
85
|
+
runtime.currentBlendMode = null;
|
|
86
|
+
// Unbind the sampled inputs. A fullscreen pass frequently reads a render target's own texture and
|
|
87
|
+
// presents it; leaving that texture bound lets the NEXT draw that renders back into that target form
|
|
88
|
+
// a framebuffer/active-texture feedback loop (e.g. a 3D scene re-rendered into a reused present
|
|
89
|
+
// target whose material leaves this unit untouched). The pass owns the hazard, so it clears it.
|
|
90
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
91
|
+
gl.activeTexture(gl.TEXTURE0 + i);
|
|
92
|
+
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
93
|
+
}
|
|
94
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
82
95
|
}
|
|
83
96
|
function drawGlFullscreenQuad(state, program) {
|
|
84
97
|
const runtime = getGlRenderStateRuntime(state);
|
|
85
98
|
const gl = state.gl;
|
|
99
|
+
// Bind a dedicated VAO before touching buffer/attribute state. Without it the quad's ARRAY_BUFFER,
|
|
100
|
+
// ELEMENT_ARRAY_BUFFER, and vertexAttribPointer writes land in whatever VAO happens to be bound —
|
|
101
|
+
// typically the last mesh VAO left bound by a 3D scene draw — silently corrupting that cached VAO
|
|
102
|
+
// (its index buffer becomes this 6-index quad buffer). The next frame redraws that mesh through its
|
|
103
|
+
// poisoned VAO and gl.drawElements reports "Insufficient buffer size". Isolating to our own VAO keeps
|
|
104
|
+
// fullscreen state from leaking into (or out of) any caller's VAO.
|
|
105
|
+
let quadVao = _quadVaos.get(state);
|
|
106
|
+
if (quadVao === undefined) {
|
|
107
|
+
quadVao = gl.createVertexArray();
|
|
108
|
+
_quadVaos.set(state, quadVao);
|
|
109
|
+
}
|
|
110
|
+
gl.bindVertexArray(quadVao);
|
|
86
111
|
const v = runtime.quadVertexData;
|
|
87
112
|
// x, y, u, v per corner — a clip-space quad with bottom-left-origin texcoords.
|
|
88
113
|
v[0] = -1;
|
|
@@ -109,6 +134,13 @@ function drawGlFullscreenQuad(state, program) {
|
|
|
109
134
|
gl.vertexAttribPointer(program.locPosition, 2, gl.FLOAT, false, 16, 0);
|
|
110
135
|
gl.vertexAttribPointer(program.locTexCoord, 2, gl.FLOAT, false, 16, 8);
|
|
111
136
|
gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0);
|
|
137
|
+
// Restore the default VAO so a later mesh draw that forgets to bind its own VAO cannot accidentally
|
|
138
|
+
// inherit the quad's attribute state, and so nothing observes our dedicated VAO as "current".
|
|
139
|
+
gl.bindVertexArray(null);
|
|
112
140
|
runtime.shaderLoc = runtime.defaultBitmapShader.locations;
|
|
113
141
|
}
|
|
142
|
+
// Per-state dedicated VAO for the fullscreen quad, kept off the render-state runtime type and freed
|
|
143
|
+
// with the state. Isolates the quad's buffer/attribute bindings so a fullscreen pass never mutates a
|
|
144
|
+
// caller's (e.g. a mesh's) currently-bound VAO. See drawGlFullscreenQuad.
|
|
145
|
+
const _quadVaos = new WeakMap();
|
|
114
146
|
//# sourceMappingURL=glFullscreenPass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glFullscreenPass.js","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,mGAAmG;AACnG,mGAAmG;AACnG,sGAAsG;AACtG,uCAAuC;AAEvC,MAAM,qBAAqB,GAAG;;;;;;;EAO5B,CAAC;AAEH,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,MAAsB;IAC9E,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,IAAI,OAAO,CAAC,kBAAkB,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;QACtD,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACvD,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC;IAClD,CAAC;IACD,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,oBAAoB,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC9E,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,EAA0B,EAAE,cAAsB;IAC3F,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAE9F,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,GAAG;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE3D,OAAO;QACL,OAAO;QACP,WAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC;QACxD,WAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC;QACxD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAO;QAC/B,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAoB,EACpB,OAAsC,EACtC,MAAmC,EACnC,IAAqC,EACrC,WAAyF;IAEzF,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAEpB,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC;IAClD,IAAI,OAAO,CAAC,kBAAkB,KAAK,eAAe,EAAE,CAAC;QACnD,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACpD,OAAO,CAAC,kBAAkB,GAAG,eAAe,CAAC;IAC/C,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACvD,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACzC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAE9B,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC7C,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAEhC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"glFullscreenPass.js","sourceRoot":"","sources":["../src/glFullscreenPass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GlRenderState, GlRenderTarget } from '@flighthq/types';
|
|
2
|
+
export declare function drawGlLinearToSrgbPass(state: GlRenderState, source: Readonly<GlRenderTarget>, dest: Readonly<GlRenderTarget> | null): void;
|
|
3
|
+
export declare const LINEAR_TO_SRGB_FRAGMENT_SRC = "#version 300 es\nprecision highp float;\nin vec2 v_texCoord;\nuniform sampler2D u_texture0;\nout vec4 fragColor;\nvec3 linearToSrgb(vec3 c) {\n c = max(c, vec3(0.0));\n vec3 low = c * 12.92;\n vec3 high = 1.055 * pow(c, vec3(1.0 / 2.4)) - 0.055;\n return mix(low, high, step(vec3(0.0031308), c));\n}\nvoid main() {\n vec4 linear = texture(u_texture0, v_texCoord);\n fragColor = vec4(linearToSrgb(linear.rgb), linear.a);\n}";
|
|
4
|
+
//# sourceMappingURL=glLinearToSrgbPass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glLinearToSrgbPass.d.ts","sourceRoot":"","sources":["../src/glLinearToSrgbPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAe1F,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,GACpC,IAAI,CAEN;AAgBD,eAAO,MAAM,2BAA2B,ibActC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { compileGlFullscreenProgram, drawGlFullscreenPass } from './glFullscreenPass';
|
|
2
|
+
// The linear->sRGB OETF present pass: encode a linear render-target texture into display sRGB as a
|
|
3
|
+
// fullscreen pass. scene-gl materials write linear HDR radiance into an rgba16f target and tonemap
|
|
4
|
+
// (when present) is a linear HDR->LDR step BEFORE this, so a caller who draws linear content must end
|
|
5
|
+
// with one encode or the canvas receives raw-linear (dark) pixels. presentGlScene ends the no-effects
|
|
6
|
+
// 3D path with exactly this pass. Keep this the single linear->sRGB seam for content that routes
|
|
7
|
+
// through it: encode once at present, never inside a per-material fragment shader.
|
|
8
|
+
//
|
|
9
|
+
// The transfer is the IEC 61966-2-1 sRGB OETF, matching linearChannelToSrgb in @flighthq/color
|
|
10
|
+
// channel-for-channel (12.92*c below 0.0031308, else 1.055*c^(1/2.4)-0.055). RGB is encoded; alpha is
|
|
11
|
+
// linear coverage and passes through unchanged. Inputs are clamped to >= 0 so a stray negative texel
|
|
12
|
+
// cannot feed pow() a NaN.
|
|
13
|
+
export function drawGlLinearToSrgbPass(state, source, dest) {
|
|
14
|
+
drawGlFullscreenPass(state, getGlLinearToSrgbProgram(state), [source.texture], dest, NOOP);
|
|
15
|
+
}
|
|
16
|
+
function getGlLinearToSrgbProgram(state) {
|
|
17
|
+
let program = _programs.get(state);
|
|
18
|
+
if (program === undefined) {
|
|
19
|
+
program = compileGlFullscreenProgram(state.gl, LINEAR_TO_SRGB_FRAGMENT_SRC);
|
|
20
|
+
_programs.set(state, program);
|
|
21
|
+
}
|
|
22
|
+
return program;
|
|
23
|
+
}
|
|
24
|
+
const NOOP = () => { };
|
|
25
|
+
// Per-state compiled OETF program, kept off the render-state runtime type and freed with the state.
|
|
26
|
+
const _programs = new WeakMap();
|
|
27
|
+
export const LINEAR_TO_SRGB_FRAGMENT_SRC = `#version 300 es
|
|
28
|
+
precision highp float;
|
|
29
|
+
in vec2 v_texCoord;
|
|
30
|
+
uniform sampler2D u_texture0;
|
|
31
|
+
out vec4 fragColor;
|
|
32
|
+
vec3 linearToSrgb(vec3 c) {
|
|
33
|
+
c = max(c, vec3(0.0));
|
|
34
|
+
vec3 low = c * 12.92;
|
|
35
|
+
vec3 high = 1.055 * pow(c, vec3(1.0 / 2.4)) - 0.055;
|
|
36
|
+
return mix(low, high, step(vec3(0.0031308), c));
|
|
37
|
+
}
|
|
38
|
+
void main() {
|
|
39
|
+
vec4 linear = texture(u_texture0, v_texCoord);
|
|
40
|
+
fragColor = vec4(linearToSrgb(linear.rgb), linear.a);
|
|
41
|
+
}`;
|
|
42
|
+
//# sourceMappingURL=glLinearToSrgbPass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glLinearToSrgbPass.js","sourceRoot":"","sources":["../src/glLinearToSrgbPass.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,mGAAmG;AACnG,mGAAmG;AACnG,sGAAsG;AACtG,sGAAsG;AACtG,iGAAiG;AACjG,mFAAmF;AACnF,EAAE;AACF,+FAA+F;AAC/F,sGAAsG;AACtG,qGAAqG;AACrG,2BAA2B;AAC3B,MAAM,UAAU,sBAAsB,CACpC,KAAoB,EACpB,MAAgC,EAChC,IAAqC;IAErC,oBAAoB,CAAC,KAAK,EAAE,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAoB;IACpD,IAAI,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;QAC5E,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAE5B,oGAAoG;AACpG,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsC,CAAC;AAEpE,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;EAczC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glPresentRenderTarget.d.ts","sourceRoot":"","sources":["../src/glPresentRenderTarget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAW1F,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,IAAI,GAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAW,GAC3C,IAAI,CAMN"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { compileGlFullscreenProgram, drawGlFullscreenPass } from './glFullscreenPass';
|
|
2
|
+
import { drawGlLinearToSrgbPass } from './glLinearToSrgbPass';
|
|
3
|
+
// Presents `target` onto `dest` (the canvas when null): the generic, subject-agnostic final step that
|
|
4
|
+
// puts a finished render target on screen. It reads the target's DECLARED color space — 'linear' content
|
|
5
|
+
// (3D scene radiance) gets the single sRGB OETF encode; 'srgb' content (2D, already encoded) is copied
|
|
6
|
+
// straight through. Present is a property of the target, not of the scene or the display object, so both
|
|
7
|
+
// paths share this one function — there is deliberately no presentGlScene / presentGlDisplayObject split.
|
|
8
|
+
// Assumes MSAA is already resolved (endGlRenderPass does that); present only encodes or copies.
|
|
9
|
+
export function presentGlRenderTarget(state, target, dest = null) {
|
|
10
|
+
if (target.colorSpace === 'linear') {
|
|
11
|
+
drawGlLinearToSrgbPass(state, target, dest);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
drawGlFullscreenPass(state, getGlCopyProgram(state), [target.texture], dest, NOOP);
|
|
15
|
+
}
|
|
16
|
+
function getGlCopyProgram(state) {
|
|
17
|
+
let program = _programs.get(state);
|
|
18
|
+
if (program === undefined) {
|
|
19
|
+
program = compileGlFullscreenProgram(state.gl, COPY_FRAGMENT_SRC);
|
|
20
|
+
_programs.set(state, program);
|
|
21
|
+
}
|
|
22
|
+
return program;
|
|
23
|
+
}
|
|
24
|
+
const NOOP = () => { };
|
|
25
|
+
// Per-state passthrough program for the 'srgb' present branch (already-encoded content, no transfer).
|
|
26
|
+
const _programs = new WeakMap();
|
|
27
|
+
const COPY_FRAGMENT_SRC = `#version 300 es
|
|
28
|
+
precision highp float;
|
|
29
|
+
in vec2 v_texCoord;
|
|
30
|
+
uniform sampler2D u_texture0;
|
|
31
|
+
out vec4 fragColor;
|
|
32
|
+
void main() {
|
|
33
|
+
fragColor = texture(u_texture0, v_texCoord);
|
|
34
|
+
}`;
|
|
35
|
+
//# sourceMappingURL=glPresentRenderTarget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glPresentRenderTarget.js","sourceRoot":"","sources":["../src/glPresentRenderTarget.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,sGAAsG;AACtG,yGAAyG;AACzG,uGAAuG;AACvG,yGAAyG;AACzG,0GAA0G;AAC1G,gGAAgG;AAChG,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,MAAgC,EAChC,OAAwC,IAAI;IAE5C,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAoB;IAC5C,IAAI,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAClE,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAE5B,sGAAsG;AACtG,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsC,CAAC;AAEpE,MAAM,iBAAiB,GAAG;;;;;;;EAOxB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GlRenderState, GlRenderTarget, Matrix, RenderPassPreserve } from '@flighthq/types';
|
|
2
|
+
export declare function beginGlRenderPass(state: GlRenderState, target: GlRenderTarget, preserve?: Readonly<RenderPassPreserve>): void;
|
|
3
|
+
export declare function endGlRenderPass(state: GlRenderState): void;
|
|
4
|
+
export declare function setGlRenderTransform2D(state: GlRenderState, transform: Readonly<Matrix>): void;
|
|
5
|
+
//# sourceMappingURL=glRenderPass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glRenderPass.d.ts","sourceRoot":"","sources":["../src/glRenderPass.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAkCjG,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GACtC,IAAI,CA0BN;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAmB1D;AAOD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAI9F"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { copyMatrix, createMatrix } from '@flighthq/geometry';
|
|
2
|
+
import { getGlRenderStateRuntime } from './glRenderState';
|
|
3
|
+
import { resolveGlRenderTarget } from './glRenderTarget';
|
|
4
|
+
// Begins a render pass into `target`: binds it (saving the previous binding for restore, so passes
|
|
5
|
+
// nest), then CLEARS every aspect by default. `preserve` spares aspects — the only per-use decision a
|
|
6
|
+
// pass makes; the clear VALUES are fixed on the target (GlRenderTarget.clearColors / clearDepth). Pair
|
|
7
|
+
// with endGlRenderPass. This is the clear/preserve model, not GL/Vulkan load ops: omit `preserve` and
|
|
8
|
+
// everything starts fresh; name what to keep.
|
|
9
|
+
//
|
|
10
|
+
// A render pass carries NO 2D transform — that is a display-object DRAW concern, not a pass concern, so
|
|
11
|
+
// a 3D pass (drawGlScene, which uses the camera) is unaffected. A 2D pass that needs a specific root
|
|
12
|
+
// device transform sets it explicitly with setGlRenderTransform2D after begin; the value is saved and
|
|
13
|
+
// restored by the begin/end bracket like the rest of the pass state.
|
|
14
|
+
//
|
|
15
|
+
// Single-attachment (the common no-effects scene / 2D-offscreen path):
|
|
16
|
+
// beginGlRenderPass(state, target) // clear color + depth
|
|
17
|
+
// drawGlScene(state, scene, camera, lights)
|
|
18
|
+
// endGlRenderPass(state, target) // restore binding + resolve MSAA
|
|
19
|
+
// presentGlRenderTarget(state, target) // colorSpace-aware encode to the canvas
|
|
20
|
+
//
|
|
21
|
+
// MRT / G-buffer (three color attachments, keep depth for a later lighting pass over the same target):
|
|
22
|
+
// beginGlRenderPass(state, gbuffer, { preserveColor: [false, false, false], preserveDepth: false })
|
|
23
|
+
// drawGlScene(state, scene, camera, lights) // fragment shader writes location 0,1,2
|
|
24
|
+
// endGlRenderPass(state, gbuffer)
|
|
25
|
+
// // ...lighting pass samples gbuffer.textures[0..2], preserving depth: { preserveDepth: true }
|
|
26
|
+
export function beginGlRenderPass(state, target, preserve) {
|
|
27
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
28
|
+
const gl = state.gl;
|
|
29
|
+
let stack = _passStack.get(state);
|
|
30
|
+
if (stack === undefined) {
|
|
31
|
+
stack = [];
|
|
32
|
+
_passStack.set(state, stack);
|
|
33
|
+
}
|
|
34
|
+
stack.push({
|
|
35
|
+
framebuffer: runtime.currentFramebuffer,
|
|
36
|
+
renderTarget: runtime.currentRenderTarget ?? null,
|
|
37
|
+
renderTargetViewport: runtime.renderTargetViewport,
|
|
38
|
+
renderTransform2D: state.renderTransform2D,
|
|
39
|
+
});
|
|
40
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, target.framebuffer);
|
|
41
|
+
gl.viewport(0, 0, target.width, target.height);
|
|
42
|
+
runtime.currentFramebuffer = target.framebuffer;
|
|
43
|
+
runtime.currentRenderTarget = target;
|
|
44
|
+
runtime.renderTargetViewport = { width: target.width, height: target.height };
|
|
45
|
+
// Force rebind on next draw — the framebuffer switch invalidates GL state assumptions.
|
|
46
|
+
runtime.currentTexture = null;
|
|
47
|
+
runtime.currentBlendMode = null;
|
|
48
|
+
clearGlRenderPass(state, target, preserve);
|
|
49
|
+
}
|
|
50
|
+
// Ends the pass opened by beginGlRenderPass: restores the framebuffer binding, viewport, and 2D render
|
|
51
|
+
// transform saved at begin, then resolves MSAA on the target that was active (a store-side property of
|
|
52
|
+
// the pass). Afterward that target's textures hold the finished, single-sample result — ready for
|
|
53
|
+
// present, effects, or sampling. A call with no matching begin is a no-op. The target is read from the
|
|
54
|
+
// runtime rather than passed, so end mirrors endWgpuRenderPass / endCanvasRenderPass across backends.
|
|
55
|
+
export function endGlRenderPass(state) {
|
|
56
|
+
const runtime = getGlRenderStateRuntime(state);
|
|
57
|
+
const gl = state.gl;
|
|
58
|
+
const ended = runtime.currentRenderTarget ?? null;
|
|
59
|
+
const saved = _passStack.get(state)?.pop();
|
|
60
|
+
if (saved !== undefined) {
|
|
61
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, saved.framebuffer);
|
|
62
|
+
const viewport = saved.renderTargetViewport ?? state.canvas;
|
|
63
|
+
gl.viewport(0, 0, viewport.width, viewport.height);
|
|
64
|
+
runtime.currentFramebuffer = saved.framebuffer;
|
|
65
|
+
runtime.currentRenderTarget = saved.renderTarget;
|
|
66
|
+
runtime.renderTargetViewport = saved.renderTargetViewport;
|
|
67
|
+
state.renderTransform2D = saved.renderTransform2D;
|
|
68
|
+
runtime.currentTexture = null;
|
|
69
|
+
runtime.currentBlendMode = null;
|
|
70
|
+
}
|
|
71
|
+
if (ended !== null)
|
|
72
|
+
resolveGlRenderTarget(state, ended);
|
|
73
|
+
}
|
|
74
|
+
// Sets the 2D root device transform the display-object update pass (prepareDisplayObjectRender) reads to
|
|
75
|
+
// place nodes with no scene parent. Call after beginGlRenderPass when a 2D pass renders into a target
|
|
76
|
+
// with its own coordinate system (the render cache); the value is restored by the matching
|
|
77
|
+
// endGlRenderPass. A fresh matrix is allocated rather than mutating in place, because the begin/end
|
|
78
|
+
// bracket saved the previous reference and restores it — mutating the shared object would corrupt that.
|
|
79
|
+
export function setGlRenderTransform2D(state, transform) {
|
|
80
|
+
const next = createMatrix();
|
|
81
|
+
copyMatrix(next, transform);
|
|
82
|
+
state.renderTransform2D = next;
|
|
83
|
+
}
|
|
84
|
+
// Clears the bound target's aspects that `preserve` does not spare. Uses per-attachment clearBufferfv so
|
|
85
|
+
// each color attachment can carry its own clear value (the G-buffer case) and preserved attachments are
|
|
86
|
+
// skipped individually — the plain single-attachment case is just the one-iteration loop.
|
|
87
|
+
function clearGlRenderPass(state, target, preserve) {
|
|
88
|
+
const gl = state.gl;
|
|
89
|
+
const preserveColor = preserve?.preserveColor ?? false;
|
|
90
|
+
for (let i = 0; i < target.textures.length; i++) {
|
|
91
|
+
if (isGlColorAttachmentPreserved(preserveColor, i))
|
|
92
|
+
continue;
|
|
93
|
+
resolveGlClearColor(state, target, i, _clearRgba);
|
|
94
|
+
gl.clearBufferfv(gl.COLOR, i, _clearRgba);
|
|
95
|
+
}
|
|
96
|
+
const hasDepth = target.depthStencilRenderbuffer !== null || target.depthTexture !== null;
|
|
97
|
+
if (hasDepth && preserve?.preserveDepth !== true) {
|
|
98
|
+
// depthMask must be enabled or the depth clear is silently dropped.
|
|
99
|
+
gl.depthMask(true);
|
|
100
|
+
gl.clearBufferfi(gl.DEPTH_STENCIL, 0, target.clearDepth, 0);
|
|
101
|
+
}
|
|
102
|
+
getGlRenderStateRuntime(state).currentBlendMode = null;
|
|
103
|
+
}
|
|
104
|
+
function isGlColorAttachmentPreserved(preserve, index) {
|
|
105
|
+
if (typeof preserve === 'boolean')
|
|
106
|
+
return preserve;
|
|
107
|
+
// Per-location; a missing or short entry defaults to clear (false), consistent with default-clear.
|
|
108
|
+
return preserve[index] === true;
|
|
109
|
+
}
|
|
110
|
+
// Writes attachment `index`'s clear color into `out` as linear 0..1 RGBA. The target's packed-RGBA
|
|
111
|
+
// clearColors win when present; otherwise the render state's background color is the fallback.
|
|
112
|
+
function resolveGlClearColor(state, target, index, out) {
|
|
113
|
+
const packed = target.clearColors[index];
|
|
114
|
+
if (packed !== undefined) {
|
|
115
|
+
out[0] = ((packed >>> 24) & 0xff) / 255;
|
|
116
|
+
out[1] = ((packed >>> 16) & 0xff) / 255;
|
|
117
|
+
out[2] = ((packed >>> 8) & 0xff) / 255;
|
|
118
|
+
out[3] = (packed & 0xff) / 255;
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const bg = state.backgroundColorRgba;
|
|
122
|
+
out[0] = bg[0] ?? 0;
|
|
123
|
+
out[1] = bg[1] ?? 0;
|
|
124
|
+
out[2] = bg[2] ?? 0;
|
|
125
|
+
out[3] = bg.length >= 4 ? bg[3] : 0;
|
|
126
|
+
}
|
|
127
|
+
// The pass bracket's save/restore stack, keyed off the render state so nested passes restore in order.
|
|
128
|
+
const _passStack = new WeakMap();
|
|
129
|
+
const _clearRgba = new Float32Array(4);
|
|
130
|
+
//# sourceMappingURL=glRenderPass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glRenderPass.js","sourceRoot":"","sources":["../src/glRenderPass.ts"],"names":[],"mappings":"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"}
|
package/dist/glRenderState.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { GlRenderOptions, GlRenderState, GlRenderStateRuntime } from '@flighthq/types';
|
|
2
|
-
export declare function createGlRenderState(canvas: HTMLCanvasElement, options?:
|
|
2
|
+
export declare function createGlRenderState(canvas: HTMLCanvasElement, options?: GlRenderOptions): GlRenderState;
|
|
3
3
|
export declare function createGlRenderStateRuntime(): GlRenderStateRuntime;
|
|
4
4
|
export declare function destroyGlRenderState(state: GlRenderState): void;
|
|
5
5
|
export declare function getGlRenderStateRuntime(state: GlRenderState): GlRenderStateRuntime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderState.d.ts","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAK5F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,
|
|
1
|
+
{"version":3,"file":"glRenderState.d.ts","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAK5F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,CA6E3G;AAMD,wBAAgB,0BAA0B,IAAI,oBAAoB,CAEjE;AAeD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAsB/D;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,oBAAoB,CAElF;AAcD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CASvE"}
|
package/dist/glRenderState.js
CHANGED
|
@@ -60,6 +60,7 @@ export function createGlRenderState(canvas, options = {}) {
|
|
|
60
60
|
// Color-adjustment fold state (mode/data/buffer + the compiled programs) is not allocated here: it
|
|
61
61
|
// is owned by the opt-in enableGlColorAdjustment, so a state that never tints carries none of it.
|
|
62
62
|
runtime.textureCache = new WeakMap();
|
|
63
|
+
runtime.imageResourceTextureCache = new WeakMap();
|
|
63
64
|
runtime.quadVertexBuffer = quadVertexBuffer;
|
|
64
65
|
runtime.quadIndexBuffer = quadIndexBuffer;
|
|
65
66
|
runtime.quadVertexData = new Float32Array(16);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderState.js","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"glRenderState.js","sourceRoot":"","sources":["../src/glRenderState.ts"],"names":[],"mappings":"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"}
|
package/dist/glRenderTarget.d.ts
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
import type { GlRenderState, GlRenderTarget, Matrix, RenderProxy2D, RenderTargetDescriptor } from '@flighthq/types';
|
|
2
|
-
/**
|
|
3
|
-
* Redirects subsequent Gl rendering into `target`'s framebuffer. Saves the current framebuffer
|
|
4
|
-
* binding, renderTargetViewport, and renderTransform2D so they can be fully restored by
|
|
5
|
-
* `endGlRenderTarget`. Supports nesting.
|
|
6
|
-
*
|
|
7
|
-
* The caller must set the desired `renderTransform` (via this function) before rendering into the
|
|
8
|
-
* target to ensure the render tree's transform2D values are correct.
|
|
9
|
-
*/
|
|
10
|
-
export declare function beginGlRenderTarget(state: GlRenderState, target: GlRenderTarget, renderTransform: Readonly<Matrix>): void;
|
|
1
|
+
import type { GlRenderState, GlRenderTarget, Matrix, RenderProxy2D, RenderTargetColorSpace, RenderTargetDescriptor } from '@flighthq/types';
|
|
11
2
|
/**
|
|
12
3
|
* Allocates a render target realizing `descriptor`'s axes (format, MSAA sampleCount, MRT
|
|
13
4
|
* colorAttachments, depth). The framebuffer is bound during creation but the previous binding is
|
|
14
5
|
* restored before returning.
|
|
15
6
|
*/
|
|
16
7
|
export declare function createGlRenderTarget(state: GlRenderState, descriptor: Readonly<RenderTargetDescriptor>): GlRenderTarget;
|
|
8
|
+
export declare function declareGlRenderTargetColorSpace(state: GlRenderState, colorSpace: RenderTargetColorSpace): boolean;
|
|
17
9
|
/** Deletes the GL resources owned by `target`. The target object must not be used after this call. */
|
|
18
10
|
export declare function destroyGlRenderTarget(state: GlRenderState, target: GlRenderTarget): void;
|
|
19
11
|
/**
|
|
@@ -25,11 +17,6 @@ export declare function destroyGlRenderTarget(state: GlRenderState, target: GlRe
|
|
|
25
17
|
* flipped (`v0=1, v1=0`) so the result composites upright.
|
|
26
18
|
*/
|
|
27
19
|
export declare function drawGlRenderTargetResult(state: GlRenderState, renderProxy: RenderProxy2D, target: Readonly<GlRenderTarget>, transform: Readonly<Matrix>): void;
|
|
28
|
-
/**
|
|
29
|
-
* Restores the framebuffer, viewport, renderTargetViewport, and renderTransform2D saved by the
|
|
30
|
-
* matching `beginGlRenderTarget` call.
|
|
31
|
-
*/
|
|
32
|
-
export declare function endGlRenderTarget(state: GlRenderState): void;
|
|
33
20
|
/** Reallocates the storage backing `target` to the new pixel dimensions, preserving its axes. */
|
|
34
21
|
export declare function resizeGlRenderTarget(state: GlRenderState, target: GlRenderTarget, width: number, height: number): void;
|
|
35
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glRenderTarget.d.ts","sourceRoot":"","sources":["../src/glRenderTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,MAAM,EACN,aAAa,EACb,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"glRenderTarget.d.ts","sourceRoot":"","sources":["../src/glRenderTarget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,MAAM,EACN,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAMzB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,cAAc,CAuChB;AAOD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAKjH;AAED,sGAAsG;AACtG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAQxF;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAChC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC1B,IAAI,CAoBN;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAkCN;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA8BxF"}
|