- From: Kang-Hao (Kenny) Lu <kanghaol@oupeng.com>
- Date: Sun, 13 Oct 2013 09:26:30 +0800
- To: W3C HTML5 中文興趣小組 <public-html-ig-zh@w3.org>
我刚学 OpenGL,顺道看了一下 CSS Shaders[1],我有个比较基本的问题: 先不管现在现在的 CSS Shaders 语法好不好,shader 有必要放在额外的文件 里么? 要求嵌入 shader 的优点应该是减少不必要的 HTTP 请求,尤其是 vertex shader 跟 fragment shader 还有不同的 URI。之后如果再有 geometry shader 会再加新 的 URI,听起来很多余。我不是很清楚有 SPDY 之后这类的性能考量是不是不重要了。 如果是在 CSS 嵌入 shader 的话,有可能是这样的语法: @filter warp { vertex: ` #version 300 layout(location=0) in vec4 matrix; void main(){ ... } `; fragment: ` #version 300 ... `; } 这里引入了一个新的跨行字符串的语法,因为旧的 CSS 字符串要添加断行字符的 话要用 \a,很丑。用 ES6 的 `` 还是 Python 的 """ 可以再讨论。之前有人是 觉得不应该再在 CSS 里面加上核心语法了,不过讨论变量的时候($var)发现到 也不是说一定不能加新的核心语法。 不用额外的 shader 档好像也比较自然,貌似 shader 档好像没有标准化的扩展名 [2]、MIME 类型(所以当前规范是用 'x-shader/x-vertex' 等等,也太长了)。 虽然估计实现不会去看 MIME 类型(如同 appcache 和 @fontface),不过连扩展 名都没有标准化的话,编辑器要高亮什么的估计有各种麻烦。 不过另外一个想法就是写 CSS 的跟写 CSS Shaders 的人可能会是不同的人,毕竟 shader 比较像是编程语言,所以分开档案可能在协作上比较方便? 有人可能会觉得用内嵌的可能会让 vertex shader 跟 fragment shader 不能任意 组合。不过这个在有 CSS 变量之后没什么问题,用 vertex: var(vertex1) 之类的还是可以任意组合,况且我也怀疑需要这种任意组合的场景很少(比如我们 Sphinx 用的基本上都是一个 vertex shader 对应一个 fragment shader) 感觉这种 内嵌 vs. 模块化 的正反理由要多少就有多少。大家怎么看?规范还有 一个把 CSS 跟 shader 都嵌在 HTML 里的例子(EXAMPLE 11)。不过我觉得这种 反而是最不好的,毕竟概念上 HTML 是语意的东西,CSS 跟 shader 都是效果。 以上 Kenny [1] https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html#custom-filter-src [2] http://stackoverflow.com/questions/6432838/what-is-the-correct-file-extension-for-glsl-shaders -- Web Specialist, Opera Sphinx Game Engine Team, Oupeng Browser, Beijing Try Sphinx: http://sphinx.oupeng.com/
Received on Sunday, 13 October 2013 01:27:01 UTC