简介
本篇文章主要目的教你如何快速的理解、掌握cocos shader的相关知识,并附加实践案例。
shader 我们可以理解为是一种在图形渲染过程中控制像素颜色的过程,通常用来创建各种视觉效果。如光照、阴影、扭曲等。
Material(材质)
material 是用于定义渲染效果的一种资源类型。简单理解可以看着是effect的使用实例,我们可以通过调整材质的属性,来控制物体的渲染效果。
material 需要与Effect一起使用。着色器定义了渲染的细节,而材质提供了一个可调整着色器的参数界面。
创建一个材质材质资源 · GitBook
Material properties
相关参数:Pass Params · GitBook
Effect
创建一个EffectCocos Creator 2.4 手册 - Effect
相关语法Effect Syntax · GitBook
内置变量
#include <cc-local>
Name | Type | Info |
---|---|---|
cc_matWorld | mat4 | 模型空间转世界空间矩阵 |
cc_matWorldIT | mat4 | 模型空间转世界空间逆转置矩阵 |
#include <cc-global>
Name | Type | Info |
---|---|---|
cc_time | vec4 | x:游戏运行时间(秒) |
cc_screenSize | vec4 | xy:屏幕尺寸 zw:屏幕尺寸倒数 |
cc_screenScale | vec4 | xy:屏幕缩放 zw:屏幕缩放倒数 |
cc_nativeSize | vec4 | xy:实际着色缓冲的尺寸 zw:实际着色缓冲的尺寸倒数 |
cc_matView | mat4 | 视图矩阵 |
cc_matViewInv | mat4 | 视图逆矩阵 |
cc_matProj | mat4 | 投影矩阵 |
cc_matProjInv | mat4 | 投影逆矩阵 |
cc_matViewProj | mat4 | 视图投影矩阵 |
cc_matViewProjInv | mat4 | 视图投影逆矩阵 |
cc_cameraPos | vec4 | xyz:相机位置 |
cc_exposure | vec4 | x:相机曝光 y:相机曝光倒数 z:是否启用 HDR w:HDR 转 LDR 缩放参数 |
cc_mainLitDir | vec4 | xyz:主方向光源方向 |
cc_mainLitColor | vec4 | xyz:主方向光颜色 w:主方向光强度 |
cc_ambientSky | vec4 | xyz:天空颜色 w:亮度 |
cc_ambientGround | vec4 | xyz:地面反射光颜色 |
#include <cc-environment>
Name | Type | Info |
---|---|---|
cc_environment | samplerCube | IBL 环境贴图 |
#include <cc-forward-light>
Name | Type | Info |
---|---|---|
cc_sphereLitPos[MAX_LIGHTS] | vec4 | xyz:球面光位置 |
cc_sphereLitSizeRange[MAX_LIGHTS] | vec4 | x:球光尺寸 y:球光范围 |
cc_sphereLitColor[MAX_LIGHTS] | vec4 | xyz:球光颜色 w:球光强度 |
cc_spotLitPos[MAX_LIGHTS] | vec4 | xyz:聚光灯位置 |
cc_spotLitSizeRangeAngle[MAX_LIGHTS] | vec4 | x:聚光灯尺寸 y:聚光灯范围 z:聚光灯角度 |
cc_spotLitDir[MAX_LIGHTS] | vec4 | xyz:聚光灯方向 |
cc_spotLitColor[MAX_LIGHTS] | vec4 | xyz:聚光灯颜色 w:聚光灯强度 |
#include <cc-shadow>
Name | Type | Info |
---|---|---|
cc_matLightPlaneProj | mat4 | 平面阴影的变换矩阵 |
cc_shadowColor | vec4 | 阴影颜色 |
自定义内置方法
-
2.x 自定义内置方法
在引擎路径:
/Applications/Cocos/Creator/2.4.11/CocosCreator.app/Contents/Resources/engine/cocos2d/renderer/build/chunks
添加.inc 文件,例如:
再Effect中使用:
-
3.x 自定义内置方法
可直接在项目的assets目录下创建一个chunks文件夹,创建.chunk 文件,其他同2.x