æ¬è¨äºã¯ãå æ¥éå¬ãããKyoto.js 19ã®ããã«ç¨æããLTè³æã«å çãããã®ã§ãã
ããã«ã¡ã¯ã天åã§ãã æè¿ã¯WebGLã§åç»ç·¨éã¢ããªãéçºãã¦ãããWebã§ã®è²ã®æ±ãã«ã¤ãã¦æ¥ã è¦ããã§ããã¾ãã ãã®è¨äºã§ã¯ãåãæè¿ç¥ã£ãè²é¢é£ã®å°ãã¿ãå ±æãã¾ãã
ç®æ¬¡
- 話é¡1: mix-blend-modeã«addããªã
- 話é¡2: Display P3
- CSS Color 4ã§Display P3ã使ããããã«ãªã£ã
- Display P3
- CSS Color 4
- CSS Color 4 ã§å°å ¥ãããè¨æ³
- media queryã§ãã£ã¹ãã¬ã¤ã®ã«ã©ã¼ãããã¡ã¤ã«ãå¤å®ãã
- Canvasã§Display P3ã使ãã«ã¯
- WebGLã§Display P3ã使ãã«ã¯
- ã¹ã¯ãªã¼ã³ã·ã§ããæ®ãã¨ãã®æ³¨æ
話é¡1: mix-blend-modeã«addããªã
- CSSã®mix-blend-modeããåç¥ã§ãã
- æè¿ã¾ã§åç´ãªå ç®åæãã§ããªãã£ãã®ç¥ã£ã¦ã¾ãããï¼
- èæ¯è²ã¨åæ¯è²ã®RGBAããã®ã¾ã¾å ç®ãããã¨ããäºãã§ããªãã£ã
- ã¤ã¾ãã¯ãã¹ãã§ã¼ããå®è£
ã§ããªãã£ã
- alpha 50%ã®è¦ç´ ãéããã¨ãåºå㯠alpha 100% ã§ã¯ãªã alpha 75% ã«ãªãï¼
- Chrome100ã§plus-lighterãå®è£
ãããã§ããããã«ãªã£ã
- JakeArchibaldã«ãã解説 https://jakearchibald.com/2021/dom-cross-fade/
- åç»ç https://www.youtube.com/watch?v=PYSOnC2CrD8
ããããBlendingã£ã¦ä½ï¼
- Webã«ãããè²ã®åæ㯠Compositing and Blending ã¨ããSpecã§å®ç¾©ããã¦ãã
- Blendingã¨Compositingã¯å¥æ¦å¿µã§ãã
- Blending: 2ã¤ã®è²ãæ··ããã㨠(multiply, darker⦠etc)
- Compositing: åæ¯è²ã¨èæ¯è²ãåæããã㨠(source-over, xor⦠etc)
Webã§ã¯åºæ¬çã«source-over compositingãã使ãããªã
- source-over: åæ¯è²ãèæ¯è²ã®ä¸ã«è¡¨ç¤ºããã
- DOMè¦ç´ ããz-indexé ã«å¡ãéãããã¦ããã¤ã¡ã¼ã¸
- source-overã«ãããBlendingã¨Compositingã¯ã以ä¸ã®ããã«è¨ç®ããã:
- alpha 50%ã®è¦ç´ ã2ã¤éããã¨ããåºåã®alphaã¯
ã¨ãªãã0.75ã«ãªã
Canvasã§ã¯source-over以å¤ã®Compositingã使ãã
- Canvasã§ã¯
globalCompositingOperation
㧠Compositing ãæå®ã§ãã- CanvasRenderingContext2D.globalCompositeOperation - Web API | MDN
- èæ¯è²ããã¹ã¯ã¨ãã¦ä½¿ãçã®ããªããã¼ãªäºãã§ãã
- Canvasã§ã¯ãglobalCompositingOperationã
lighter
ã«ãããã¨ã§å ç®åæãã§ãã- å
¨ç¶ âlighterâ ã§ã¯ç¡ããâ¦â¦
- å®éSpecã«ããPorter-Duffã«ããã plus ã®ãã¨ã ããã¨æ¸ãã¦ãã
- ã¤ã¾ãã
plus-lighter
ã¨ãããã¼ãã³ã°ã¯ããã®lighter
ã¨plus
ãä½µè¨ãããã®â¦â¦ï¼
- å
¨ç¶ âlighterâ ã§ã¯ç¡ããâ¦â¦
PDF Reference
- Adobe製å(Photoshop, AE etc)ã§ä½¿ããã¦ãBlending Functionã¯ãPDF Referenceã§å®ç¾©ããã¦ãã
- ä»ç¤¾ã®ç»å/æ å/ãã¶ã¤ã³ç³»ã¢ããªããåºæ¬çã«Adobeã®Blending Functionsãçä¼¼ã¦ããã£ã½ã
- Adobeå ¬å¼ã®PDFã®ããã¥ã¡ã³ãã ãâ¦â¦
OK I found the PDF reference explaining blending functions used in Adobe apps, it wasn't even linked from the official AE doc... https://t.co/8eBnehXYnt pic.twitter.com/XckNEXV5mD
— ð¼ðð¼ðð (@amagitakayosi) 2022å¹´12æ9æ¥
ä¸æ¹ãã®é WebGLã¯â¦â¦
- WebGL (â OpenGL) ã§ã¯
gl_blendEquation()
ã¨gl.blendFunc()
ã§è²ãåæãã- ref. https://mrdoob.github.io/webgl-blendfunctions/blendfunc.html
- å®æ°ãã¬ãã£ã¬ãã£ãã¦å¦çãåãæ¿ãã
- PDF Referenceã§å®ç¾©ããã¦ããããªBlendingãããããã¨ãã¯ãèªåã§ã·ã§ã¼ãã¼ãæ¸ãããç¡ã
- 大æµã®ã±ã¼ã¹ã§ã¯ããã®è¾ºã®ã©ã¤ãã©ãªã使ã£ã¦ããã
- åã¯âã®ã©ã¤ãã©ãªããã®ã¾ã¾ä½¿ãããã«ããããªãã®ã§ãé å¼µã£ã¦ãã¾ãâ¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦â¦
話é¡2: Display P3
CSS Color 4ã§Display P3ã使ããããã«ãªã£ã
ãªã«ããï¼
Display P3
ã¤ã¾ãï¼
- è²å (= è²ç©ºé = Color Space) ã®ä¸ã¤
- Appleãçå®ãã
- 2015å¹´ã®iMacãããµãã¼ã https://support.apple.com/kb/SP731?locale=ja_JP
- ãæ°ç¾ä¸è²ä»¥ä¸ãéããã
- 2015å¹´ã®iMacãããµãã¼ã https://support.apple.com/kb/SP731?locale=ja_JP
- Display P3ã¯DCI-P3ã¨ããè¦æ ¼ããæ´¾çãã
- DCI-P3ã¨ã®éã
- white pointã D65 (â 6500K) (DCI-P3ã ã¨~6300 K)
- ã¬ã³ãã2.2 (DCI-P3ã ã¨2.6)
ã¤ã¾ãï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼
- 表示ã§ããè²ãå¢ãã
- Display P3ã§ã®
rgb(1, 0, 0)
ã¯ãsRGBã®rgb(1, 0, 0)
ããã赤ã - 256è²ãã1677ä¸è²ï¼å³å¯ã«ã¯16777216è²ï¼ã®ã»ããè¯ããããã¨ããã®ã¨ã¯éã話
- Display P3ã§ã®
CSS Color 4
https://www.w3.org/TR/css-color-4/
- Candidate Recommendation Draft ç¶æ ï¼å§åæºåï¼ï¼
- Color 3ãå§åãããã®ã¯2011å¹´
- æã ã
In particular, it allows specifying colors in other color spaces than sRGB; previously, the more saturated colors outside the sRGB gamut could not be used in CSS even if the display device supported them.
- sRGB 以å¤ã®è²åãæ±ããããã«ãããããã¨ããã®ã主ãªãã¼ãã£ã½ã
CSS Color 4 ã§å°å ¥ãããè¨æ³
color()
é¢æ°
è²ç©ºéãæå®ãã¦è²ãå®ç¾©ã§ãã
- Twitterã§è¦ã¤ãããã¢: https://codepen.io/argyleink/pen/RwyOyeq
- æè¿ã®ãã©ã¦ã¶ã§ã¯ãã使ãã
linear-gradient(to right in hsl)
ã¨ã
詳ããã¯Chromeã®éçºããã°ã¨ãtakanoripããã®è¨äºã«å ¨é¨æ¸ãã¦ãã
ä½è«: CSS Color 5ã§ã¯ICCãããã¡ã¤ã«ãèªããããã«ãªããããâ¦â¦ï¼
media queryã§ãã£ã¹ãã¬ã¤ã®ã«ã©ã¼ãããã¡ã¤ã«ãå¤å®ãã
ãã¢: https://codepen.io/fand/pen/poxYYrR
sRGBã®ãã£ã¹ãã¬ã¤ã§è¡¨ç¤º:
MacBook Proã®ãã£ã¹ãã¬ã¤ã§è¡¨ç¤º:
ãsRGBã®å ´åã®ã¿è¡¨ç¤ºãããã¨ãããã¨ã¯ã§ããªãâ¦â¦ï¼
(color-gamut: srgb) and (not(color-gamut))
ã ã¨ãã¡ã ã£ã- 誰ãæãã¦ï¼
Canvasã§Display P3ã使ãã«ã¯
getContext()
ã«ãªãã·ã§ã³ã渡ãã¨ãDisplay P3ã§åºåã§ããããã«ãªã:- ref. https://webkit.org/blog/12058/wide-gamut-2d-graphics-using-html-canvas/
- ã¾ã Safariã ãï¼
let canvas = document.getElementById("canvas"); let context = canvas.getContext("2d", { colorSpace: "display-p3" });
- å³ã®èµ¤ã®ã»ãã赤ã
- ãã£ã¹ãã¬ã¤ã®è¼åº¦ãä¸ããã¨ããããããã§ã
- ImageDataã®è²ãåå¾ããã¨ããè²åãæå®ã§ãã
imageData = context.getImageData(0, 0, 1, 1, { colorSpace: "display-p3" });
WebGLã§Display P3ã使ãã«ã¯
const canvas = document.querySelector('#canvas'); const context = canvas.getContext("webgl"); context.drawingBufferColorSpace = "display-p3"; // ããã¯åããªãã®ã§æ³¨æ canvas.getContext("webgl", { colorSpace: "display-p3" });
demo: https://codesandbox.io/s/webgl-display-p3-test-xs8zcp
- ãã£ã¹ãã¬ã¤ãDisplay P3ã«å¯¾å¿ãã¦ããã¨ããWebGLããDisplay P3空éã®è²ãåºåã§ãã
- ãã¯ã¹ãã£ã¨ãã¦ä½¿ãç»åã®ã«ã©ã¼ãããã¡ã¤ã«ã¯èæ ®ãããªãã®ã§æ³¨æ
ã¹ã¯ãªã¼ã³ã·ã§ããæ®ãã¨ãã®æ³¨æ
- macOSã§ã¹ã¯ãªã¼ã³ã·ã§ãããæ®ãã¨ãåºåç»åã®ã«ã©ã¼ãããã¡ã¤ã«ã¯æ®å½±ãããã£ã¹ãã¬ã¤ã®ã«ã©ã¼ãããã¡ã¤ã«ã«ãªã
- Finderã§ç»åãã¡ã¤ã«ãå³ã¯ãªãã¯â
Get Info
ã§ã«ã©ã¼ãããã¡ã¤ã«ããã§ãã¯ã§ãã - sRGBã®ãã£ã¹ãã¬ã¤ã§æ®å½±ããã¹ã¯ãªã¼ã³ã·ã§ããã®å ´å
- Display P3ã®ãã£ã¹ãã¬ã¤ã§æ®å½±ããã¹ã¯ãªã¼ã³ã·ã§ããã®å ´å
- Finderã§ç»åãã¡ã¤ã«ãå³ã¯ãªãã¯â
- WebGLã§sRGBåºåããç»é¢ã®ã¹ã¯ã·ã§ãä»ã®ã¢ããªã¨æ¯è¼ãã¦ããããããªããããããããã¨æ©ãã§ãã
I spent hours fixing a bug with a transparent PNG. It renders differently in different apps. I thought it must be a color encoding bug...
— ð¼ðð¼ðð (@amagitakayosi) 2023å¹´4æ18æ¥
But finally, it turned out the problem was in macOS's screenshot app; I had to change the display's color profile before taking screenshotð pic.twitter.com/a5rZgm2ODC- 1è¡ç®ã®ã¹ã¯ã·ã§ã¨2è¡ç®ã®ã¹ã¯ã·ã§ã§è²å³ãéãã®ããããã¾ããï¼
- ãã£ã¹ãã¬ã¤ã®ã«ã©ã¼ãããã¡ã¤ã«ãsRGBã«å¤æ´ããã¨æ£ããè²å³ã«ãªã£ã (3è¡ç®)
- ãªããããæ¹æ³ãæãã¦ããâ¦â¦
- ColorSync Utilityã§è§£æ±ºããããã§ãããããï¼ï¼ï¼ï¼ï¼