CocosCreatorShaderEffect系列-2-Effect文件解读

CocosCreatorShaderEffect系列-2-Effect⽂件解读
⼀、题外话
实际上,官⽅已经存在⼀份 Effect ⽂件的解读,不过是位于 Cocos 3D 的材质⽬录下 Effect Syntax 。建议提前阅读(没阅读过也没关系,我会教你阅读)。
那么,我还写些什么呢?
1. 前⾯章节,我们提及到 Cocos 的官⽅⽂档可能有些隐晦。因此我会尽量结合⾃⼰的理解,再详细做⼀次解读。
2. 同时,上述官⽅⽂档是针对 Cocos 3D 的 Effect,⽽这和 Cocos Creator 的 Effect 有些区别,我会 着重针对 Cocos Creator 的
Effect 去进⾏解读。
当然,如果你已经很Effect ⽂件的语法,那么可以跳过本章节。
⼆、安装 Effect 语法⾼亮插件
启明星二号
⾸先,Visual Studio Code ⽤户先安装 Cocos Effect ⾼亮插件,这是 Cocos 官⽅写的插件,极⼤地⽅便我们使⽤ Visual Studio Code 去查看和编辑任何 *.effect ⽂件
蛋白质工程Cocos Effect Plugin
意志亡灵三、Effect ⽂件
OK,安装好插件后,现在我们可以选择⼀个 Cocos Creator 内置的⼀个 Effect ⽂件去进⾏解读了。那么,解读哪个材质对应的 Effect ⽂件呢?
在我们创建⼀个 Sprite 组件的时候,可以看到,所采⽤的的材质是 builtin-2d-sprite ,事实上, Label 组件也是默认⽤的 builtin-2d-sprite 材质。作为最常⽤的两个组件,这份 builtin-2d-sprite 材质已然很值得我们解读,下⾯我们见开始针对 builtin-2d-sprite 进⾏解读
builtin-2d-sprite
2010阅兵式buildin-2d-sprite 的 Effect ⽂件在编辑器的「资源管理器」中,位于 internal/resources/effects/builtin-2d-sprite,⽤ VsCode 打开后就可以看到完整内容
Effect Summary
ps:可以看到 builtin-2d-sprite.effect ⽂件的实际路径,以及⽂件的结构组成。
折叠⼀下,可以看到 Effect ⽂件主要由 1个 CCEffect 结构 以及 多个 CCProgram 结构 组成的,同时,整个 Effect ⽂件采⽤ YMAL 1.2标准规范 (建议阅读此链接)
四、CCEffect 结构说明
展开 CCEffect 后,我们可以看到如下定义:
CCEffect
以下是CCEffect结构的注解(整个注解⽂件在 仓库的 builtin-2d-sprite-explain)
CCEffect explain
以上截图解释为 Cocos Creator 2.2.1 版本的 Effect ,在 Cocos Creator 2.3.0 版本,⽀持 Effect 变种,会有区别,但是关键属性应该不会变动。
特别地,
在上⾯截图解释 vert 和 frag 参数的含义时,我提及到的 「⽂档」 ⼀词,具体的⽂档是指 官⽅ Effect Syntax 的 《Pass 中可配置的参数》章节
Pass Parameter
夫妻生活指南
事实上,在打开 Pass 可配置 GL 参数及默认值的完整列表 后,你还能发现 blendState.targets[i].blend以及 rasterizerState.cullMode 等参数的⾝影:
image.png
现在贴上这么⼀张图之后,我相信你已经很清楚 Pass 可以配置什么属性,默认值是什么,意思是什么了。
实际上,在我⼀开始看这些⽂档的时候,是⼀脸懵逼的,因为不知道什么对应什么。但其实官⽅⽂档都有写,感觉就是有些 隐晦 ,直到我对着实际代码时,在对着⽂档看,才能体会到这中间的说明。
五、CCProgram 结构说明
在 passes 数组中,我们通过 vert 参数指定了顶点着⾊器,通过 frag 参数指定了⽚元着⾊器,⽽在 Cocos Creator 的 Effect ⽂件中,是通过 CCProgram 去包裹这两个着⾊器的实现代码
5.1 顶点 Shader 说明
展开 CCProgram vs 后,我们可以看到如下代码:
CCProgram vs explain
相信你到这⾥之后,应该对默认的顶点着⾊器代码有个⼤概关系理解,不会再出现这函数从哪来的疑问了,当然,你可能还存在疑问,⽐如:
cc_matProj 函数是什么意思?
cc_matWorld 函数是什么意思?vb数据库编程实例
还有什么函数,还有什么头⽂件?
现在你终于触发了⼀个新的篇章,实际上,这些疑问的答案在 官⽅的内置 shader 变量 ⽂档中有说明。

本文发布于:2024-09-21 05:33:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/388308.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:阅读   看到   代码   不会
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议