ygtu

3D建模

Cocos Creator:Surface Shader 执行流程

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Surface Shader 执行流程 Surface Shader 统一了着色流程,同时为 vs 和 fs 提供了大量的自定义函数,大家可以根据自己的需求,重写相关函数。 请参考 Surface Shader 内置函数 和 使用宏定义实现函数替换。 本文主要目的在于帮助开发者熟悉 Surface Shader 执行流程,弄清楚各函数调用时机。 函数入口 我们先看一下内置的 Surface Shader 文件的 CCEffect 部分: CCEffect %{ techniques: - name: opaque passes: - vert: standard-vs frag: standard-fs ... }% 可以看到, 每一个 pass 的
4 min read
3D建模

Cocos Creator:Surface Shader 结构

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Surface Shader 结构 一个典型的 Surface Shader 通常由四个主要部分构成: 1. CCEffect 2. 共享常量声明 3. 宏映射 4. 主体功能函数 5. Shader组装器:用于将上面4个部分与内置的Surface Shader 功能进行级任 1、CCEffect CCEffect 用于描述 Surface Shader 的 techniques, pass , 属性以及渲染状态等信息。材质会根据 CCEffect 中的描述生成默认值,以及在材质面板上显示。 具体内容请参考 Cocos Shader 语法。 2、共享常量声明 共享常量声明会将所有 pass, vs 和 fs 都需要用到的常量写在一起,
3 min read
3D建模

Cocos Creator:内置 Surface Shader 导读

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 内置 Surface Shader 导读 Cocos Creator 3.7.2 版本开始, builtin-standard.effect 使用 Surface Shader 架构实现。 本文以 builtin-standard.effect 作为典型案例,讲解 Surface Shader 细节。 你可以属性 Surface Shader 结构定义、语法细节以及渲染流程。 下面的内容,建议配合 internal/effects/builtin-standard.effect 一起阅读。 基本结构 Surface Shader 代码通常由几个部分组成: * 信息描述(CCEffect):描述此 Shader 的技术、渲染过程组成部分,
8 min read
3D建模

Cocos Creator:前向渲染与延迟渲染 Shader 执行流程

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 前向渲染与延迟渲染 Shader 执行流程 Cocos Creator 引擎支持 前向渲染和延迟渲染。因此,在 Shader 架构上,也要为这两种渲染流程做兼容,并且让用户感知不到。 内置的 Legacy Shader 都是 PBR 材质,它们在渲染时都遵守以下流程: 前向渲染 1. 调用 vs 2. 调用 fs -> surf -> 光照计算 延迟渲染 Buffer 阶段 1. 调用 vs 2. 调用 fs -> surf -> GBuffer Lighting 阶段
1 min read
3D建模

Cocos Creator:公共函数库

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 公共函数库 可以在 资源管理器/internal/chunks/common/ 文件夹下找到不同分类的函数库头文件。 公共库中的函数不依赖任何内部数据,可以当作工具函数直接使用。 使用示例 #include #include 目录与功能应表 文件夹名函数用途主要文件color色彩相关功能(颜色空间、tone-mapping 等)aces, gammadata数据相关功能(压缩解压缩等)packing, unpackdebugDebug View 相关功能effect场景特效相关功能(水、雾等)foglighting光照相关功能(bxdf、反射、衰减、烘焙等)brdf, bxdf, light-mapmath数学库(坐标变换、数值判定和运算等)coordinates, transformmesh模型相关功能(材质转换、模型动画等)material, vat-animationshadow阴影相关功能(p
1 min read
3D建模

Cocos Creator:Cocos Shader 内置全局 Uniform

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Cocos Shader 内置全局 Uniform 要在 Cocos Shader 中使用内置变量 Uniform,需要包含对应的着色器片段(Chunk)即可,如下代码所示: //local uniforms #include //global uniforms #include 以下是常用内置变量,按所在着色器片段进行分组,列表如下: cc-local.chunk NameTypeInfocc_matWorldmat4模型空间转世界空间矩阵cc_matWorldITmat4模型空间转世界空间逆转置矩阵 cc-global.chunk NameTypeInfocc_timevec4x:游戏运行时间(秒) y:帧时间(秒) z:游戏运行帧数 w:未使用cc_screenSizevec4xy:屏幕尺寸 zw:屏幕尺寸倒数cc_screenScalevec4xy:屏幕缩放
2 min read
Cocos Creator:着色器片段(Chunk)
3D建模

Cocos Creator:着色器片段(Chunk)

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器片段(Chunk) 着色器片段(Chunk)是一种跨文件代码引用机制,使着色器代码片段可以在不同的文件之间进行复用。 着色器片段的语法基于 GLSL 300 ES,在资源加载时会进行预编译,生成目标 Shader 代码。 创建着色器片段 在 资源管理器 面板中点击右键,选择 创建 -> 着色器片段(Chunk): 便可创建一个默认名为 chunk 的着色器片段,如下图: Include 机制 在标准 GLSL 语法基础上,Cocos Shader 引入了 C 语言风格的语法扩展 — Include 机制。 通过 include 机制,可以在任意 Shader 代码(CCProgram
3 min read
3D建模

Cocos Creator:预处理宏定义

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 预处理宏定义 为了更好地管理代码内容,Cocos Shader 提供了预处理宏机制,它有几个特性: 1. 不同组合的宏会生成不同的代码 2. 生成的代码无冗余、执行高效 3. 使用过的宏定义会显示在材质面板上,方便调试 4. 以 CC_ 开头的宏不会显示在材质面板上 以默认的 Surface Shader 为例,当它被材质使用时,你在材质的 属性检查器 中,可以看到如下图所示的宏开关: 宏定义注意事项 宏定义有一些默认的规则。 默认值 所有的宏定义默认值都是 false,因此当定义一个简单宏定义(例如用于布尔开关的宏)时,无法指定其默认值,但可通过 属性检查器 或代码修改。 如果设计上某些宏之间存在互斥关系(不能同时为 true),可以通过使用 tag 声明的宏来处理,详情请参考下文
4 min read
3D建模

Cocos Creator:GLSL 语法简介

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 GLSL 语法简介 GLSL 是为图形计算量身定制的用于编写着色器的语言,它包含一些针对向量和矩阵操作的特性,使渲染管线具有可编程性。本章主要介绍在编写 Shader 时常用的一些语法,包括以下几个方面: * 变量 * 语句 * 限定符 * 预处理宏定义 变量 变量及变量类型 变量类型说明Cocos Shader 中的默认值Cocos Shader 中的可选项bool布尔型标量数据类型false无int/ivec2/ivec3/ivec4包含 1/2/3/4 个整型向量0/[0, 0]/[0, 0, 0]/[0, 0, 0, 0]无float/vec2/vec3/vec4包含 1,2,3,4
8 min read
3D建模

Cocos Creator:YAML 101

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 YAML 101 Cocos Shader 使用的是符合 YAML 1.2 标准的解析器,这意味着 Cocos Shader 与 JSON 是完全兼容的,直接使用 JSON 也完全不会有问题,例如: "techniques": [{ "passes": [{ "vert": "skybox-vs", "frag": "skybox-fs", "rasterizerState": { "cullMode": "none" } # ... }] }] 当然这也意味着繁琐的语法,所以 YAML 提供了一些更简洁的数据表示方式: 所有的引号和逗号都可以省略 key1: 1 key2: unquoted string 注意:冒号后的空格不可省略 行首的空格缩进数量代表数据的层级1 object1: key1: false object2: key2:
2 min read
3D建模

Cocos Creator:Pass 可选配置参数

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 Pass 可选配置参数 Pass 中的参数主要分两个部分: * 开发者可自定义的 属性检查器 面板参数 properties * 引擎提供的用于控制渲染管线状态的 PipelineStates Properties properties 用于将 Shader 中定义的 uniform 进行别名映射。这个映射可以是某个 uniform 的完整映射,也可以是具体某个分量的映射(使用 target 参数),代码示例如下: properties: albedo: { value: [1, 1, 1, 1] } # uniform vec4 albedo roughness: { value: 0.8, target: pbrParams.g } # uniform vec4 pbrParams offset:
12 min read
Cocos Creator:着色器语法
3D建模

Cocos Creator:着色器语法

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器语法 Cocos Creator 中的着色器(Cocos Shader ,文件扩展名为 *.effect),是一种基于 YAML 和 GLSL 的单源码嵌入式领域特定语言(single-source embedded domain-specific language),YAML 部分声明流程控制清单,GLSL 部分声明实际的 Shader 片段,这两部分内容相互补充,共同构成了一个完整的渲染流程描述。 注意:推荐使用 Visual Studio Code 编写 Cocos Shader,并在应用商店中安装 Cocos Effect 扩展,提供编写时的语法高亮提示。 语法框架概览 Cocos Shader 通常由两个部分组成: * CCEffect:用于声明渲染技术(Technique)、渲染过程(
5 min read
Cocos Creator:无光照
3D建模

Cocos Creator:无光照

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 无光照 无光照是最基础的着色模型,这种模型下,引擎的任何光源都无法影响其最终效果,适用于: * 不受光源影响的物体 * 画面要求不高或性能要求高的场景 在材质的 Effect 属性中将着色器切换为 Cocos Creator 内置的无光照着色器(builtin-unlit.effect)时,如下图: 制作标准 技术选型时,若要在使用 unlit 材质的模型下使用光照,可将光照信息绘制在纹理贴图上,然后将纹理贴图拖拽到材质的 MainTexture 属性框中。 若要使用真实光照,可参考:真实物理渲染 参数 参数说明mainTexture主纹理tilingOffset模型 UV 的缩放和偏移量,xy 对应缩放,zw 对应偏移mainColor主颜色,该颜色会在片元着色器内被处理colorScale和主颜色相乘alphaThreshold用于半透明测试,在启用 USE_ALPHA_TEST 的情况下,小于该值的像素会被抛弃(discard) 宏
2 min read
Cocos Creator:卡通渲染
3D建模

Cocos Creator:卡通渲染

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 卡通渲染 相对于 真实渲染(Physical Based Rendering - PBR),非真实渲染(Non-Photorealistic Rendering - NPR)通过特性化渲染,实现与真实世界完全不同的美术表现。 卡通渲染(Toon Shading)是非真实渲染的常见效果之一。 通常卡通渲染的内容包含以下几个基础部分: * 对物体进行描边 * 降低色阶的数量并模拟色阶不连续现象 * 明暗色调分离 * 阴影形状干扰等 渲染过程 Cocos Creator 提供了内置卡通渲染着色器 builtin-toon.effect,以此为例,我们在材质资源中将 Effect 属性切换为 builtin-toon.effect,可以看到卡通渲染由两个渲染过程(Pass)组成: * 渲染过程 0(Pass 0):用于描边,默认不启用,可勾选右侧的
6 min read
Cocos Creator:基于物理的光照模型
3D建模

Cocos Creator:基于物理的光照模型

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 基于物理的光照模型(Physically Based Rendering - PBR) Cocos Creator 从 v3.0 开始提供了基于物理渲染(PBR)的光照着色器:builtin-standard.effect。PBR 根据现实中光线传播原理和能量守恒定律,模拟出近似于真实物理光照的效果。 PBR 的优势在于: * 真实性:基于物理原理的渲染让最终效果更加逼真 * 一致性:美术制作流程规范化、制作标准统一化 * 复用性:模型材质与光照环境分离,在所有 PBR 项目中均可复用 使用 PBR 制作材质和纹理 在 资源管理器 面板中手动创建的材质,默认使用的是 builtin-standard.effect 着色器,我们称之为 PBR 材质,PBR 材质使用
13 min read
3D建模

Cocos Creator:内置着色器

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 内置着色器 引擎提供了一系列通用的内置着色器,位于编辑器 资源管理器 面板的 internal -> effects 目录下。双击着色器文件即可在外部 IDE 打开进行查看和编辑(前提是需要在 偏好设置 -> 外部程序 中配置 默认脚本编辑器)。 Cocos Creator 将内置着色器大致归类为以下几种: * internal:内置引擎功能相关着色器,比如编辑器内用 gizmo,几何体渲染等等。用户通常不需要关注这些。 * pipeline:管线特效着色器,包括延迟光照、后效和抗锯齿等。 * util:存放一些零散的内置着色器,例如 DCC 材质导入和序列帧动画等。用户通常不需要关注这些。 * for2d:2D 渲染相关着色器,如 spine 和 sprite 动画等。 * particles:
3 min read
Cocos Creator:着色器创建与使用
3D建模

Cocos Creator:着色器创建与使用

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 着色器创建与使用 创建着色器 在 资源管理器 面板中点击左上角的 + 号按钮(或者在 Assets 目录下点击右键),在弹出菜单中选择 着色器(Effect) 或者 表面着色器(Surface Shader), 便可创建新的着色器资源。 两种类型的着色器区别: * 着色器(Effect):简单的无光照着色器,可参考 internal/effects/builtin-unlit.effect * 表面着色器(Surface Shader):基于 PBR 的着色器,可参考 internal/effects/builtin-standard.effect 我们以 表面着色器(Surface Shader) 为例,引擎会在 资源管理器 中创建一个默认名为 surface-effect
4 min read
3D建模

Cocos Creator:材质系统类图

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 材质系统类图 材质系统控制着每个模型最终的着色流程与顺序,在引擎内相关类间结构如下: 上述图中的 Material(材质)和 EffectAsset(着色器资源)都属于资源。 * Material 负责 EffectAsset 声明的 Uniform、宏数据存储以及 Shader 使用和管理,这些信息都会以材质资源的可视化属性的形式展示在 属性检查器 面板中。Material 通常是被渲染器组件使用,所有继承自 RenderableComponent 的组件都是渲染器组件,例如 MeshRenderer、Sprite 等。更多内容请参考 材质资源。 * EffectAsset 负责提供属性、宏、Shader 列表定义。每个 EffectAsset 最终都会被编译成引擎内使用的格式,引擎再根据格式进行解析和应用。所有解析后的 EffectAsset 信息都会被注册到引擎内的 ProgramLib 库里,
1 min read
Cocos Creator:内置材质
3D建模

Cocos Creator:内置材质

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 内置材质 Creator 在 资源管理器 面板的 internal/default_materials/ 目录下内置了几种常见的材质,其使用的 Effect 为 内置着色器 ,内置材质的属性都不允许修改。 内置材质说明default-materail非透明物体的 标准材质default-materail-transparent半透明物体的 标准材质particle-add标准粒子材质ui-sprite-material精灵的标准材质 由3D建模学习工作室 翻译整理,转载请注明出处! 上一篇:Cocos Creator:程序化使用材质 (mvrlink.com) 下一篇:Cocos Creator:材质系统类图 (mvrlink.com)
1 min read
Cocos Creator:程序化使用材质
3D建模

Cocos Creator:程序化使用材质

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 程序化使用材质 创建材质 材质(Material)资源可以看成是着色器资源(EffectAsset)在场景中的资源实例。 Creator 支持在 资源管理器 中手动 创建材质资源,同时也支持通过 IMaterialInfo 接口在脚本模块中程序化地创建材质。IMaterialInfo 的可配置参数包括: * effectAsset/effectName:effect 资源引用,指定使用哪个 EffectAsset 所描述的流程进行渲染。(effectAsset 和 effectName 二者必须选其一) * technique:指定使用 EffectAsset 中的第几个 technique,默认为第 0 个。 * defines:宏定义列表,指定开启哪些 预处理宏定义,默认全部关闭。 * states:管线状态重载列表,指定对渲染管线状态(深度模板透明混合等)有哪些重载,
4 min read
Cocos Creator:从 Maya 中导出 FBX 模型资源
3D建模

Cocos Creator:从 Maya 中导出 FBX 模型资源

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 从 Maya 中导出 FBX 模型资源 导出步骤 选中要导出的模型: 选中主菜单 File -> Export Selection Option 展开导出选项: 将 File type 设置为 FBX export, 点击 export selection 按钮: 将 Current Preset 设置为 Autodesk Media and Entertainment: 开启 Embed Media 选择导出路径,命名为 simpleBox, 点击 Export Selection 导出文件 备注:更多信息可参阅 Maya FBX
2 min read
Cocos Creator:从 3ds Max 中导出 FBX 模型资源
3D建模

Cocos Creator:从 3ds Max 中导出 FBX 模型资源

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 从 3ds Max 中导出 FBX 模型资源 导出步骤 在 3ds Max 选中要导出的模型 选中主菜单 File -> Export -> Export Selected 展开导出选项: 将 Save as type 设置为 .fbx, 点击 save 按钮 将 Current Preset 设置为 Autodesk Media and Entertainment: 开启 Embed Media: 点击 OK 导出文件: 备注 : 更多信息请参阅 3DS Max
2 min read
Cocos Creator:导入从 DCC 工具导出的模型
3D建模

Cocos Creator:导入从 DCC 工具导出的模型

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 导入从 DCC 工具导出的模型 目前大多数数字内容制作(Digital Content Creation, DCC)工具(3ds Max、Maya、Blender)都能导出 FBX 和 glTF 这两种格式的模型文件,所以这些工具导出的内容都能在 Cocos Creator 中得到良好的展示。 导出 FBX 因为 DCC 工具的坐标系和游戏引擎的坐标系可能不一致,所以在导出模型时需要进行一些变换才能在引擎中得到想要的结果。例如:Blender 的坐标系为 X 轴朝右,Y 轴朝里,Z 轴朝上,而 Cocos Creator 3.x 的坐标系为 X 轴朝右,Y
4 min read
3D建模

Cocos Creator:批量蒙皮网格渲染器组件

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 批量蒙皮网格渲染器组件(SkinnedMeshBatchRenderer) 批量蒙皮网格渲染器组件(SkinnedMeshBatchRenderer)用于将同一个骨骼动画组件控制的所有子蒙皮模型网格合并渲染。 属性功能Operation对属性的任何修改不会立即生效,需要点 Cook 按钮重新计算才能应用。Materials合批后使用的“母材质”需要使用自己定制的合批版 effect。LightmapSettings用于烘焙 Lightmap,详情请参考 光照贴图。ShadowCastingMode指定当前模型是否会投射阴影,需要先在场景中 开启阴影。ReceiveShadow指定当前模型是否会接收并显示其它物体产生的阴影效果,需要先在场景中 开启阴影。该属性仅在阴影类型为 ShadowMap 时生效。SkinningRoot骨骼蒙皮的根节点,一般为 SkeletalAnimation 组件所在节点。AtlasSize合图生成的最终图集的边长。BatchableTextureNames材质中真正参与
2 min read
3D建模

Cocos Creator:蒙皮网格渲染器组件

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 蒙皮网格渲染器组件(SkinnedMeshRenderer) 蒙皮网格渲染器组件(SkinnedMeshRenderer)主要用于渲染蒙皮模型网格。 导入模型资源 后,若模型网格中带有蒙皮信息,在使用模型时,SkinnedMeshRenderer 组件便会自动添加到模型节点上。 属性 属性功能Materials网格资源允许使用多个材质资源,所有材质资源都存在 materials 数组中。 如果网格资源中有多个子网格,那么 Mesh Renderer 会从 materials 数组中获取对应的材质来渲染此子网格。LightmapSettings用于烘焙 Lightmap,详情请参考 光照贴图。ShadowCastingMode指定当前模型是否会投射阴影,需要先在场景中 开启阴影。ReceiveShadow指定当前模型是否会接收并显示其它物体产生的阴影效果,需要先在场景中 开启阴影。该属性仅在阴影类型为 ShadowMap 时生效。Mesh指定渲染所用的网格资源,网格渲染器组件中 网格资源 部分
2 min read
NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号