轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码)

这篇具有很好参考价值的文章主要介绍了轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

此混合渲染与计算系统中,用户侧可直接接触和操作可渲染(计算)实体(Entity)。这些实体可以用于呈现画面效果也可以仅用于计算。实体可以加入场景,可以加入渲染核心,也可以加入计算核心。如果使用rendering or computing pass node,也可以直接将渲染实体加入对应的pass node。

用于计算的实体使用请见: https://blog.csdn.net/vily_lei/article/details/134236068?spm=1001.2014.3001.5502

当前示例源码github地址:

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

此示例渲染系统实现的特性:

1. 用户态与系统态隔离。

         细节请见:引擎系统设计思路 - 用户态与系统态隔离-CSDN博客

2. 高频调用与低频调用隔离。

3. 面向用户的易用性封装。

4. 渲染数据(内外部相关资源)和渲染机制分离。

5. 用户操作和渲染系统调度并行机制。

6. 数据/语义驱动。

当前示例运行效果:

轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码),GPU/CPU,WebGL/WebGPU,3D引擎,3d,WebGPU

此示例基于此渲染系统实现,当前示例TypeScript源码如下文章来源地址https://www.toymoban.com/news/detail-742684.html

export class PrimitiveEntityTest {
	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 = [];
		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 = 350.0;
		for (let i = 0; i < entities.length; ++i) {
			let rad = 2.0 * Math.PI * i / entities.length;

			let entity = entities[i]
				.setAlbedo(new Color4().randomRGB(1.5, 0.1))
				.setARM([1.1, Math.random() * 0.95 + 0.05, Math.random() * 0.9 + 0.1]);
			entity.transform.setPosition( [radius * Math.cos(rad), 0, radius * Math.sin(rad)] );
			rc.addEntity(entity);
		}
	}

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

到了这里,关于轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web3D数学基础(平移、旋转、缩放矩阵)—WebGL、WebGPU、Threejs

    参考资料:threejs中文网 threejs qq交流群:814702116 本下节课给大家介绍下矩阵的概念,以及用于几何变换的矩阵,比如平移矩阵、缩放矩阵、旋转矩阵。 如果你对这些几何变换的矩阵概念比较熟悉,可以跳过本节课。 线性代数、图形学 如果你有《线性代数》、《计算机图形学

    2024年02月03日
    浏览(53)
  • 同屏实时渲染百万级独立的3D可渲染对象

    大规模渲染在游戏、家装、或者其他生产制造相关的环境下有直接的刚需,能独立渲染的3D对象越多,越容易实现复杂的场景需求。 下图是WebGPU版200多万(2 * 1024 * 1024)个可渲染的3D对象,的实时渲染情况截图。

    2024年02月08日
    浏览(50)
  • 用WebGPU实现基于物理的渲染

    推荐:用 NSDT编辑器 快速搭建可编程3D场景 最近,我花了相当多的时间在 WebGPU 中使用 IBL(基于图像的照明)编写 PBR(基于物理的渲染)渲染器。 PBR 本身并没有什么新奇之处。 这是一项自 2014 年以来就存在的技术,所有现代图形引擎都使用它。 但我还没有看到任何在 Web

    2024年02月10日
    浏览(59)
  • d3d12龙书阅读----d3d渲染流水线

    在输入装配器阶段,会从显存中读取顶点与索引这种几何数据,然后根据图形基元的类型,根据索引将顶点组装起来。 我们来看看几种常见的图形基元类型: 我们可以看到可以把图形基元设置为未定义、点、线、三角形与控制点 根据索引我们可以将顶点按照一定的顺序组装

    2024年03月16日
    浏览(56)
  • GEngine一个基于WebGPU的渲染引擎

    一、废话篇: 2019年时候就有写一个渲染引擎想法,一直到现在才真正意义上算给实现了当初的想法,写了好几个月了和小伙伴这才有个初版(虽然里面还有一堆bug哈,没时间改啊)。说在前面GEngine借鉴了其他渲染引擎思路与代码(毕竟要站在巨人肩膀上,别在那说你就是抄

    2024年02月08日
    浏览(62)
  • Unity 之 Material (材质)渲染3D对象的重要组件

    在Unity中,Material(材质)是一种用于渲染3D对象的重要组件。Material定义了对象的外观,包括其颜色、纹理、光照属性和反射等。以下是关于Material的详细介绍: 创建Material : 要创建一个Material,通常需要一个着色器(Shader)以及一个或多个纹理。您可以通过以下步骤来创建

    2024年02月08日
    浏览(47)
  • 12. WebGPU 矩阵数学

    在最近的 3 篇文章中,介绍了如何平移、旋转和缩放顶点位置。平移、旋转和缩放都被认为是一种变换。这些变换中的每一个都需要对着色器进行修改,并且 3 个转换中的每一个都依赖于顺序。 在之前的示例中,先缩放,然后旋转,最后平移。如果以不同的顺序应用它们,会

    2024年02月09日
    浏览(37)
  • WebGPU实战3D电商

    在过去的几年里,我们一直在为 WebGPU 编写新版本的 Babylon.js 引擎。 随着下一代 Web 3D 即将在Chrome 102~103版本上公开WebGPU 1.0 ,人们的兴奋情绪与日俱增。 在这篇博文中,我将快速概述这个新的 Babylon.js WebGPU 引擎,并将研究它可以为 Web 上的 3D 商务体验带来的一些性能改进。

    2024年02月16日
    浏览(42)
  • Qt+QtWebApp开发笔记(一):QtWebApp介绍、下载和搭建基础封装http轻量级服务器Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130631547 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:没有了 下一篇:《Qt+Q

    2024年02月05日
    浏览(73)
  • 【Java基础篇 | 面向对象】—— 封装详解

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习Java的一点学习心得,欢迎大家在评论区讨论💌 封装概念 : 将数据和对数据的操作封装在一个类中,对外部的访问只通过类提供的

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包