Creator3D中shader5_代码是如何控制effect中的属性
发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,这篇文章将为大家详细讲解有关Creator3D中shader5_代码是如何控制effect中的属性,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言之
千家信息网最后更新 2025年02月10日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安全错误
数据库的锁怎样保障安全
软件开发小知识
加强网络安全的最重要的基本措施
国家公安部网络安全攻防演练
许平君小说软件开发
农场游戏直销软件开发
上海 软件开发培训
国家实行网络安全分级
从中学生家庭教育与网络安全
学习软件开发免费
主题网络安全教育
余姚继领网络技术有限公司
网络安全测评有几个等级
网络技术红宝书vpls
腾讯微信每年服务器多少钱
user服务器实例配置
顶尖的网络安全专家
代理服务器换ip
网络安全普法讲堂
excel粘贴列数据库
网络技术发展速度
南方基金软件开发待遇怎么样
sd网络安全
7620路由器变打印服务器
网络安全硕士和本科差距
云南库存erp软件开发
数据库 非结构化数据
软件开发有哪些阶段
网站服务器怎么打开
服务器坏了需要重新配置吗
代理服务器换ip