轻量封装WebGPU渲染系统示例<32>- 若干线框对象(源码)

当前示例源码github地址:

https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/WireframeEntityTest.ts

当前示例运行效果:

此示例基于此渲染系统实现,当前示例TypeScript源码如下:

export class WireframeEntityTest {
	private mRscene = new RendererScene();
	initialize(): void {

		this.initEvent();
		this.initScene();
	}
	private initEvent(): void {
		const rc = this.mRscene;
		rc.addEventListener(MouseEvent.MOUSE_DOWN, this.mouseDown);
		new MouseInteraction().initialize(rc, 0, false).setAutoRunning(true);
	}
	private mouseDown = (evt: MouseEvent): void => {};
	private initScene(): void {
		const rc = this.mRscene;

		let axis = new AxisEntity();
		rc.addEntity( axis );

		let entities = [
			new SphereEntity(),
			new BoxEntity(),
			new CylinderEntity({alignYRatio : 0.0}),
			new CubeEntity({cubeSize: 130}),
			new TorusEntity({radius: 110, axisType: 1}),
			new PlaneEntity({axisType: 1, extent: [-80, -80, 160, 160], doubleFace: true}),
			new ConeEntity({alignYRatio : 0.0})
		];

		let ls = entities;
		entities = [];

		// random sorting
		for (let i = 0, ln = ls.length; i < ln; ++i) {
			const k = Math.round(Math.random() * 888)%ls.length;
			const t = ls[k];
			entities.push(ls[k]);
			ls.splice(k,1);
		}

		let radius = 300.0;

		for (let i = 0; i < entities.length; ++i) {

			let rad = 2.0 * Math.PI * i / entities.length;
			let pos = new Vector3(radius * Math.cos(rad), 0, radius * Math.sin(rad));

			let entity = entities[i].setAlbedo(new Color4().randomRGB(1.5, 0.1));
			entity.arm = [1.1, Math.random() * 0.95 + 0.05, Math.random() * 0.9 + 0.1];
			entity.transform.setPosition( pos );
			rc.addEntity(entity);
		}

		radius += 230;
		for (let i = 0; i < entities.length; ++i) {

			let rad = 2.0 * Math.PI * i / entities.length + 0.5;
			let pos = new Vector3(radius * Math.cos(rad), 0, radius * Math.sin(rad));

			let entity = new PrimitiveEntity({geometry: entities[i].geometry, doubleFace: true, wireframe: true})
			entity.color = entities[i].color;
			entity.arm = entities[i].arm;
			entity.transform.setPosition( pos );
			rc.addEntity(entity);
		}
	}

	run(): void {
		this.mRscene.run();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/149500.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拜耳阵列(Bayer Pattern)以及常见彩色滤波矩阵(CFA)

一、拜耳阵列的来源 图像传感器将光线转化成电流&#xff0c;光线越亮&#xff0c;电流的数值就越大&#xff1b;光线越暗&#xff0c;电流的数值就越小。图像传感器只能感受光的强弱&#xff0c;无法感受光的波长。由于光的颜色由波长决定&#xff0c;所以图像传播器无法记录…

博客系统页面设计

目录 前言 1.预期效果 1.1博客列表页效果 1.2博客详情页效果 1.3博客登陆页效果 2.实现博客列表页 2.1实现导航栏 2.2实现版心 2.3实现个人信息 2.4实现博客列表 3.实现博客正文页 3.1引入导航栏 3.2引入版心 3.3引入个人信息 3.4实现博客正文 4.实现博客登陆页…

【寒武纪(7)】MLU的cntoolkit:Cambricon-BANG架构和使用分析,MLU并行计算的硬件抽象、编程模型以及调优思路

文章目录 硬件抽象1存储1.1.1 存储层次访存一致 计算模型1 Core核内同步和并行2 核间并行和同步 编程模型1、Kernel计算规模 任务类型执行示例 性能调优性能调优实践参考 cambricon BANG架构是基础的&#xff0c;高度抽象的&#xff0c;向用户暴露统一编程模型和编程接口&#…

Go 理解零值

在 Go 语言中&#xff0c;零值&#xff08;Zero Value&#xff09;是指在声明变量但没有显式赋值的情况下&#xff0c;变量会被自动赋予一个默认值。这个默认值取决于变量的类型&#xff0c;不同类型的变量会有不同的零值。零值是 Go 语言中的一个重要概念&#xff0c;因为它确…

Pytest UI自动化测试实战实例

环境准备 序号库/插件/工具安装命令1确保您已经安装了python3.x2配置python3pycharmselenium2开发环境3安装pytest库 pip install pytest 4安装pytest -html 报告插件pip install pytest-html5安装pypiwin32库(用来模拟按键)pip install pypiwin32 6安装openpyxl解析excel文…

教你如何优化MySQL慢查询SQL语句?快速提升系统性能!

前言 应用系统性能测试过程中&#xff0c;性能优化是绕不开的话题&#xff0c;对测试人员而言&#xff0c;性能优化的第一站就是SQL语句的优化与分析。因此本文主要以MySQL数据库为例&#xff0c;介绍常见的慢查询SQL语句执行效率分析与优化方法和简单示例&#xff0c;为致力于…

【原创】V2024中化解电力行业设备表的五年难题

我这个人今生注定不能“大富大贵”&#xff0c;因为我的缺点实在太多了&#xff0c;其中非常重要的一项是&#xff1a;脸盲&#xff01;简单来说就是很容易把不同的人搞混&#xff0c;记住名字的时候没记住面相&#xff0c;记住面相的时候又把名字给忘了&#xff0c;尴尬的人生…

Pod详细介绍

目录 Pod 1、Pod基础概念 2、集群中Pod的使用方式 1&#xff09;一个Pod中运行一个容器 2&#xff09;一个Pod中运行多个容器 3、Pod的类型 1&#xff09;控制器管理的Pod 2&#xff09;自助式Pod 3&#xff09;静态Pod 4、Pod中容器的分类 1&#xff09;基础容器&#xf…

day26_css

今日内容 零、 复习昨日 一、CSS 零、 复习昨日 HTML - 页面基本骨架结构,内容展现 CSS - 美化页面,布局 JS - 动起来 一 、引言 1.1CSS概念 ​ 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通用标记语言的一个应用&#xff09;…

首周聚焦百度智能云千帆大模型平台使用,《大模型应用实践》实训营11月16日开讲!

百度智能云千帆大模型平台官方出品的《大模型应用实践》实训营本周正式上线&#xff01;这是百度智能云推出的首个系列课程&#xff0c;课程内容满满干货&#xff01; 11月16日本周四即将开课&#xff0c;首周由百度智能云千帆大模型平台产品经理以及百度智能云千帆资深用户知…

什么是自动化测试框架?常用的自动化测试框架有哪些?

无论是在自动化测试实践&#xff0c;还是日常交流中&#xff0c;经常听到一个词&#xff1a;框架。之前学习自动化测试的过程中&#xff0c;一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料&#xff0c;加上自己的一些实践&#xff0c;算是对“框架”…

【echarts】实现单线与多线滚轮联动、隐藏拖拽、关闭动画

单线滚轮联动 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>ECharts DataZoom</title><script src"https://cdn.jsdelivr.net/npm/echarts5.2.0/dist/echarts.min.js"></script> </hea…

为什么软件可以被破解,但是压缩包却破解不了?

为什么软件可以被破解&#xff0c;但是压缩包却破解不了&#xff1f; 软件的加密和压缩包的加密不是同一种加密。 压缩包的加密是传统意义上数据的加密&#xff0c;就是用一个密钥&#xff08;密码&#xff09;&#xff0c;对原始数据进行一些数学运算&#xff0c;得到一个密文…

数据结构与算法之美学习笔记:19 | 散列表(中):如何打造一个工业级水平的散列表?

目录 前言如何设计散列函数&#xff1f;装载因子过大了怎么办&#xff1f;如何避免低效的扩容&#xff1f;如何选择冲突解决方法&#xff1f;工业级散列表举例分析解答开篇内容小结 前言 本节课程思维导图&#xff1a; 今天&#xff0c;我们就来学习一下&#xff0c;如何设计一…

计算机视觉:使用opencv实现车牌识别

1 引言 汽车车牌识别&#xff08;License Plate Recognition&#xff09;是一个日常生活中的普遍应用&#xff0c;特别是在智能交通系统中&#xff0c;汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起&#xff0c;以准…

芯向未来|紫光展锐CEO任奇伟博士受邀主持ICCAD 2023高峰论坛

11月10日至11日&#xff0c;中国集成电路设计业2023年会暨广州集成电路产业创新发展高峰论坛&#xff08;ICCAD 2023&#xff09;在广州保利世贸博览馆召开&#xff0c;本届年会以“湾区有你&#xff0c;芯向未来”为主题&#xff0c;分开幕式、高峰论坛、7场专题研讨、产业展览…

全局代码规范配置 ( Eslint )

项目团队开发 为了保证统一的代码格式规范&#xff0c;可以借助两个插件以及 eslint 自由配置进行 首先需要在 vscode 安装 Eslint Prettier - Code formatter 安装所需依赖 pnpm install --save-dev eslint eslint-plugin-react eslint-plugin-react-hooks eslint…

球星马布里申请香港高才通计划落户香港拿身份!谈谈香港身份的好处!

球星马布里申请香港高才通计划落户香港拿身份&#xff01;谈谈香港身份的好处&#xff01; 据香港政府新闻网14日消息&#xff0c;前美国职业篮球联赛球员马布里&#xff0c;日前向香港人才服务办公室递交高端人才通行证计划的申请。香港劳工及福利局局长孙玉菡与他会面&#x…

黄金投资面对K线图有哪些好用的交易策略?

在现货黄金交易中&#xff0c;学会观察K线图能够帮助投资者进行市场分析&#xff0c;根据K线图呈现出来的市场走势制定交易策略&#xff0c;是技术分析的主要作用。在黄金买卖过程中掌握K线交易技巧能够提升理财效率&#xff0c;所以这也就成为了炒金者的必修课。 K线图是以交…

使用手机作为电脑的麦克风和摄像头外设

工具 Iriun Iriun 电脑端安装&#xff1a;Iriun Android: Iriun 4K Webcam for PC and Mac - Apps on Google Play Apple: Iriun Webcam for PC and Mac on the App Store 基础功能免费&#xff0c;普通使用足够了。 付费功能&#xff1a; 使用 这里有介绍&#xff1a…