orillusion 一款完全支持 WebGPU 标准的轻量级渲染引擎,轻松实现Web3D效果

名称: /Orillusion/orillusion

地址: https://github.com/Orillusion/orillusion

fork: 97  star: 1,235  发语言: TypeScript

项目简介: Orillusion is a pure Web3D rendering engine which is fully developed based on the WebGPU standard.  

Orillusion 引擎是一款完全支持 WebGPU 标准的轻量级渲染引擎,旨在实现桌面级渲染效果,并支持在浏览器中对复杂场景进行 3D 渲染。

orillusion 一款完全支持 WebGPU 标准的轻量级渲染引擎,轻松实现 Web3D 效果
01
引擎特点
webGPU 支持
引擎底层没有考虑到兼容现有的 WebGL 标准,而是完全向最新的 WebGPU 标准看齐。
ECS 组件式系统

采用业内普遍开始采用 组合优于继承 的开发设计原则,放弃继承式架构,采用了最新的ECS 组件式架构作为引擎的成体设计思路,消除了复杂的继承和功能交织问题,让开发者可以更灵活地进行功能组合,提高开发效率和降低复杂度。

设计
面向数据(DO)设计

采用了 ECS 中核心 Data Oritented (面向数据开发) 理念,通过在 GPU 中创建连续内存,同时在 CPU 和 GPU 之间通过内存映射的方式,实现按需 DO 的结构。既能实现数据的连续高效传递和减少 CPU 和 GPU 之间数据交换的等待时间和次数,也能提高缓存命中率,实现性能的提升,同时还可以保证整体引擎开发和使用的易用性。

  集群光照剔除

在二维 (Tile) 和三维 (Cluster) 同时对于空间进行块状分割,最后只计算对这个块状空间有光照贡献的光源,完成无效光源的剔除过程,提高计算效率。

物理仿真系统

引擎首先接入了 ammo.js,同时搭建了基于 Compute Shader 的 GPU 端的物理仿真引擎,目前支持粒子,流体,软体,刚体,布料等。

基于物理的材质渲染

引擎支持最基本的 Blinn-phong 模型材质渲染,同时为了更好的真实感渲染效果,还依靠 HDR Light ,实现了基于 PBR (Physically-based rendering) 的材质渲染。

丰富的后处理特效

后处理特效 是使得渲染内容氛围感提升的重要处理方式。引擎基于 WebGPU 的 compute shader,目前实现了 HDR 泛光,屏幕空间反射, 环境光屏蔽 等常用的后处理效果。

 

02
安装及使用
支持通过 NPM 和 CDN 引入的方式使用。

  通过 NPM 安装

安装依赖

npm install @orillusion/core –save

引入指定模块

import { Engine3D, Camera3D } from ‘@orillusion/core’

或者导入全局模块

import * as Orillusion from ‘@orillusion/core’

  通过 CDN 导入使用

!- 最新发布版本 -> script src="https://cdn.orillusion.com/orillusion.umd.js">script>
 !- 或通过 unpkg 加载指定版本 -> script src="https://unpkg.com/@orillusion/core@0.6.0/dist/orillusion.umd.js">script>

 

03
引擎核心
引擎核心包括实体与组件,Object3d,Scence3D,坐标变换,脚本组件,Engine3D配置
  实体与组件







引起遵循 组合优于继承 的开发设计原则,设计了自己的组件系统

orillusion 一款完全支持 WebGPU 标准的轻量级渲染引擎,轻松实现 Web3D 效果

Object3D
Object3D 是引擎内置的实体对象,可以被用作最基本的组件容器。

orillusion 一款完全支持 WebGPU 标准的轻量级渲染引擎,轻松实现 Web3D 效果

04

使用方法示例

  创建 3D 引擎实例

import { Engine3D } from '@orillusion/core'
Engine3D.init().then(()=>{
// Next
})

 

如果需要使用异步的方式,可以使用Engine3D.init()async/await
import { Engine3D } from '@orillusion/core'
async function demo(){
await Engine3D.init();
// Next
}
demo()

 创建画布

首先创建一个便签,使其包含Engine3D.init()canvascanvasid
canvas id="canvas" width="800" height="500" />
然后初始化引擎
import { Engine3D } from '@orillusion/core';
let canvas = document.getElementById('canvas')


await Engine3D.init({
canvasConfig: { canvas }
})
05
效果展示
Orillusion 引擎支持很多的 3D 渲染功能,比如摄像机,光照,阴影等。同时也支持骨骼动画,属性动画,Morph 动画等。下面展示的骨骼动画效果。

orillusion 一款完全支持 WebGPU 标准的轻量级渲染引擎,轻松实现 Web3D 效果

更多的内容,比如后处理特效及高级功能,请到其官网观看
https://www.orillusion.com/
© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...