Creator3D中shader5_代码是如何控制effect中的属性
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章将为大家详细讲解有关Creator3D中shader5_代码是如何控制effect中的属性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言之
千家信息网最后更新 2025年12月03日Creator3D中shader5_代码是如何控制effect中的属性
这篇文章将为大家详细讲解有关Creator3D中shader5_代码是如何控制effect中的属性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
前言
之前做了一个球形的波浪水球,当时提到一句有点像加载进度条,那么下去我就实现了一下这个功能,游戏的加载进度用它来显示。
效果展示
正文
1.概述
在上边的效果显示中,大家可以看见,球形的波浪高度,随着游戏加载的进度逐渐变高,游戏加载到100%的时候,球也正好被填充满。那么大家就会想到,波浪小球的shader实现效果是在effec文件中,而游戏的加载进度是在游戏代码中,应该怎样在代码中去设置effect中的属性。
2.实现
Effect代码:
CCEffect %{ techniques: - name: opaque passes: - vert: general-vs:vert # builtin header frag: unlit-fs:frag properties: &props mainTexture: { value: white } mainColor: { value: [1, 1, 1, 1], editor: { type: color } } mScale: { value: [1, 1, 1,1] } mPos: { value: [1, 1, 1,1] } mHeight: { value: 0 } - name: transparent passes: - vert: general-vs:vert # builtin header frag: unlit-fs:frag blendState: targets: - blend: true blendSrc: src_alpha blendDst: one_minus_src_alpha blendSrcAlpha: src_alpha blendDstAlpha: one_minus_src_alpha properties: *props}%CCProgram unlit-fs %{ precision highp float; #include 新建一个effect文件,我们需要下面3个地方的改动
1.添加可编辑的属性,mScale,mPos,mHieght 是我们需要添加的。
properties: &props mainTexture: { value: white } mainColor: { value: [1, 1, 1, 1], editor: { type: color } } mScale: { value: [1, 1, 1,1] } mPos: { value: [1, 1, 1,1] } mHeight: { value: 0 }2.声明添加属性的类型
uniform Constant { vec4 mainColor; vec4 mScale; vec4 mPos; float mHeight; };实现波浪效果
vec4 frag () {//顶点坐标,法线坐标都是基于世界坐标系的//mPos 小球的坐标//mScale 小球的大小//mHeight 波浪在小球中的高度 vec4 color=mainColor; if(v_position.y+sin((v_position.x+cc_time.x)*7.0)/40.0>mPos.y-mScale.y/2.0+mHeight){ color = vec4(1.0,1.1,1.0,0.1); } return CCFragOutput(color * texture(mainTexture, v_uv)); }游戏脚本中的代码
//获取小球的材质this.loadSphereCm = this.loadSphere.getComponent(ModelComponent);let material: Material = this.loadSphereCm.material;//设置材质中mainColor属性值material.setProperty("mainColor", new Vec4(0.0, 0.7, 0.8, 1.0));let pos: Vec3 = this.loadSphere.position;let scale: Vec3 = this.loadSphere.scale;//设置材质中mPos属性值material.setProperty("mPos", new Vec4(pos.x, pos.y, pos.z, 0.0));//设置材质中mScale属性值material.setProperty("mScale", new Vec4(scale.x, scale.y, scale.z, 0.0));this.mProgress = 0;this.schedule(() => {this.mProgress += 1; if (this.mProgress > 100) { this.mProgress = 100; } //根据加载进度设置mHeight的值 material.setProperty("mHeight", scale.y * (this.mProgress / 100)); this.labelLoad.getComponent(LabelComponent).string = "资源初始化进度" + this.mProgress + "%";}, 0.07);关于Creator3D中shader5_代码是如何控制effect中的属性就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
属性
坐标
代码
进度
小球
波浪
效果
材质
控制
世界
内容
坐标系
文件
文章
是在
更多
法线
球形
知识
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
萧山区直播软件开发
网络安全班会300字感悟
初中校园网络安全活动总结
c#wpf链接数据库
创建服务器要数据库吗
南京基础网络技术常见问题
数据库技术员干什么的
云店网络技术有限公司
数据库出版物的定义
井冈山市十四五网络安全
贵州智慧城管软件开发
武汉熙宁网络技术有限公司
zt解说神奇宝贝服务器
数据库性别输入掩码
深圳市软件开发培训学校
2019网络安全龙头
关于www服务器
公司内网服务器经常断
数据库查看表的内容的命令
梦幻买号挖图白云山服务器怎么样
真正的互联网科技公司
建立链接服务器
功能架构图需要有数据库么
一个服务器有多少零部件
公司内部做影视服务器
网络技术加密_解密技术
星鼎源杭州网络技术有限公司
计算机三级考试网络技术要求
贵州地矿局网络安全
服务器什么叫流入流量