新的跨平台渲染引擎:Ab3d.DXEngine 5.2 Crack

news2025/1/16 5:58:56

用于 WPF 和 WinForms 的 DirectX 11 3D 渲染引擎

Ab3d.DXEngine 是一种超快的 3D 渲染引擎,可用于 .Net 桌面应用程序。采集 by Ω578867473

 

Ab3d.DXEngine采用超快的多线程渲染技术,可以充分利用显卡,提供与使用C++时几乎相同的极致性能。

 

该引擎还支持具有逐像素照明、PBR(基于物理的渲染)材质和阴影的顶级视觉效果。

Ab3d.DXEngine 非常易于使用。您可以使用 WPF 3D 对象来定义 3D 场景、相机和灯光。更重要的是,它与Ab3d.PowerToys库配合得很好——终极 3D 工具包,为您提供了许多构建块来创建 3D 应用程序。

Ab3d.DXEngine is not another game engine (like Unity) that forces you to use its game editor, its architecture and requires many hacks and tricks to be used in a standard .Net application. The Ab3d.DXEngine is a new rendering engine that is built from ground up with the purpose to be used in standard Desktop .Net applications.

 

 

版本 5.2

  • 添加了 FaceColorMaterial 和 FaceColorEffect,它们可以通过为模型的每个面(三角形)指定不同的颜色来渲染 3D 模型。
  • 添加了 MeshCollider,可用于测试网格与 3D 位置、Rect3D、BoundingBox 或其他网格之间的碰撞。
  • 为 MeshCollider 添加了 GetClosestPosition。它可用于获取最接近指定 3D 位置的顶点的索引。
  • MultiPolyLineVisual3D 中的所有线条现在都通过一次绘制调用进行渲染。当渲染多条折线时,这会极大地提高性能(这可以通过将 DXScene.RenderMultiPolyLinesWithOneDrawCall 设置为 false 来禁用)。
  • 将 LineIndices 数组添加到 ScreenSpaceLineMesh。设置后,网格将从 LineIndices 创建一个索引缓冲区(用于通过一次绘制调用渲染多条折线)。
  • 修复了启用平面阴影渲染时渲染 3D 线和实例对象的问题。
  • 添加了为 DXEngine 的 SimpleMesh 和 GeometryMesh 创建 OctTree 的支持。这大大提高了使用 DXEngine 的网格时的命中测试性能。
  • 当网格中的顶点(位置)数大于或等于 DXScene.DXHitTestOptions.MeshPositionsCountForOctTreeGeneration 时,为实现 IOctTreeMesh(SimpleMesh、GeometryMesh、DXMeshGeometry3D)的网格自动生成 OctTree。当DXScene.DXHitTestOptions.GenerateOctTreeOnMeshInitialization 为true(默认为false)时,当网格添加到MeshObjectNode 且顶点数足够时(MeshPositionsCountForOctTreeGeneration),OctTree 会自动生成。这在以前的版本中已经适用于 DXMeshGeometry3D(从 WPF 的 MeshGeometry3D 生成)。
  • 更新网格后更新 DXMeshGeometry 中的 OctTree。
  • 向 CameraDistanceSortedRenderingQueue 添加了 CheckAllBoundingBoxCorners 属性。当设置为 true 时,透明度排序会检查边界框的所有角,而不仅仅是中心位置。这速度较慢,但​​可能会解决一些透明度排序问题 - 请参阅新的“透明度排序类型”示例以获取更多信息。
  • 向 Ab3d.DirectX.CommonUtils 添加了 GetPositionFromVertexBuffer 和 GetPositionsFromVertexBuffer 静态方法。它们可用于从通用顶点缓冲区数组(可以是 PositionNormalTexture、PositionNormal、PositionColor 等数组)中读取位置
  • 添加了 ITriangularMesh 接口,该接口定义了 TrianglesCount 属性和 GetTrianglePositions 方法,可用于从实现该接口的网格中获取三角形位置。
  • 改进了调用 GetAllHitResults 方法时的命中测试 - 当光线命中由另一个三角形共享的三角形边时,新版本不会返回两个命中结果。在这种情况下,以前的版本返回两个命中结果,每个结果都有自己的 TriangleIndex。因为在这种情况下,光线只穿过物体一次,所以新版本只返回一次命中结果。如果您希望获得两个命中结果(与之前的版本一样),请将 DXScene.DXHitTestOptions.ReportAllHitTrianglesWhenEdgeIsHit 设置为 true。
  • 改进了几何着色器中粗线的渲染,以便在更改视图的纵横比(宽度除以高度)时,线的宽度方向不会改变。此外,当线条方向更改时,线条图案的比例会保留。
  • 添加了 IMeshNode 接口。它由提供 GetMesh 方法的 SceneNodes 实现,可以返回一个使用过的网格。
  • 将 XRayMaterial 中的 ReadZBuffer 和 WriteZBuffer 的默认值设置为 true。
  • 向 MeshBase 类添加了 VertexCount 属性,因此可以从任何 DXEngine 的网格对象中获取顶点(位置)的数量。
  • 向 Ab3d.DirectX.HitTester 类添加了静态 AddAllMeshHitResults 方法。这可以用来代替调用 GetAllHitObjects 并允许重用命中结果列表(防止在每次调用 GetAllHitObjects 时生成新列表)。
  • 在处理 DXScene 之前移除所有 sprite 批次时,正确处理 DefaultRenderSpritesRenderingStep。
  • 当调用 DXViewportView.Refresh 或调用 DXScene.RenderScene 且 forceRender 为真时,即使隐藏 DXViewportView 或 DXScene.IsEnabled 为假,也会渲染场景。
  • 防止在使用子 DXViewportView 对象和使用自定义根 SceneNode 对象调用命中测试方法时引发异常。
  • 防止在调整使用 DirectXOverlay 的 DXViewportView 大小时有时可能发生的错误,没有超级采样,没有抗锯齿,并显示许多具有多线程的对象。
  • 向 DXViewportView 添加了 DefaultSystemAdapterChanged 事件。用户可以订阅此事件,以便在更换主显卡时收到通知(在某些笔记本电脑上,外接显示器断开连接后可能会发生这种情况)。在这种情况下,不能再使用共享纹理,因此 DXEngine 切换到使用 WritableBitmap。这可能非常慢。因此,建议在此事件处理程序中保存 3D 场景的状态,然后处理 DXViewportView 并创建一个新的 DXViewportView(这将使用新的主显卡并允许再次使用共享纹理)。

Ab4d.SharpEngine 是用于桌面和移动 .Net 应用程序的跨平台 3D 渲染引擎。

现有的渲染引擎 Ab3d.DXEngine 使用 DirectX 11。因此,它只能在 Windows 上使用。新引擎使用 Vulkan API。由于它是使用 .NET 6 构建的,新引擎是真正的跨平台,可以在 Windows、Linux(包括 Raspberry PI 4)、macOS、Android 和 iOS 上使用。 

我知道现在你想问我:web 呢?我正在使用 WebAssembly 监视 Blazor 的状态。我认为事情正在朝着正确的方向发展,但目前这项技术还不足以支持更复杂的 3D 图形应用程序。主要问题是 WebAssembly 无法直接访问 Canvas,因此每次调用都需要通过 java 脚本。因为 3D 渲染引擎需要执行大量的 WebGL(或 WebGPU)调用,所以这会很慢。此外,在我看来,对于高端和要求苛刻的 3D 图形,网络总是很慢。不管怎样,长期计划是也提供对 web 的支持,以便相同的 c# 代码也可以在浏览器中运行。

Vulkan 也是一个开销非常小的 API,这使得它比 DirectX 11 快得多。此外,Vulkan 支持添加到新显卡的所有新功能,包括光线追踪。这并不意味着 Ab3d.DXEngine 已经支持光线追踪,但有可能在未来添加该功能和其他新功能。

因为新的渲染引擎是从头开始构建的,所以可以使用 Ab3d.PowerToys 和 Ab3d.DXEngine 的所有专业知识和经验来使其编程 API 干净且更易于使用。我承认在使用 Ab3d.DXEngine 和 Ab3d.PowerToys 时,API 在所有情况下都不是很好。Ab3d.PowerToy 构建在可扩展性不强的 WPF 3D 对象之上,因此需要做出一些妥协(例如,相机派生自 FrameworkElement 而不是 Camera)。此外,Ab3d.DXEngine 将所有 WPF 3D 和 Ab3d.PowerToys 对象转换为它自己的对象。这意味着应用程序有每个对象的两个版本。在其他情况下,必须使用一些技巧来为 Ab3d.PowerToys 和 WPF 3D 对象提供 Ab3d.DXEngine 功能(例如使用 SetDXAttribute)。所以,拥有易于使用的 API 是新引擎的主要目标之一。

希望您已经对新的渲染引擎感到兴奋。
在这种情况下,只需跳转到GitHub 上的示例页面:Ab4d.SharpEngine.Samples

您将在其中找到显示如何将 Ab4d.SharpEngine 与 WPF、AvaloniaUI、WinUI 3、SDL、Glfw 结合使用的解决方案。一些示例将仅在 Windows 上运行;有些还将在 Linux 和 macOS 上运行。有些将在 Android 上运行。iOS 示例将在不久的将来推出。我还计划添加对 WinForms 和 MAUI 的支持。如果您知道任何其他众所周知的 UI 框架,请告诉我,我也会尽力提供支持。

另请查看 GitHub 上的自述文件,因为它提供了许多其他信息。

 

因为您是 Ab3d.PowerToys 和 Ab3d.DXEngine 的现有用户,所以您可能对将新引擎与当前库进行比较非常感兴趣。

让我们从Ab3d.DXEngine 和 Ab3d.PowerToys 的优点开始:

  • Ab3d.DXEngine和Ab3d.PowerToys是非常成熟的产品,经过众多客户的“现场”测试和验证。
  • 这两个库目前提供更多功能,并附带更多示例,可用作满足您需要的代码模板。
  • Ab3d.DXEngine 支持多线程,目前在许多用例中提供更快的 3D 渲染。
  • Ab3d.DXEngine 可以在没有显卡时使用软件渲染(例如在虚拟机或服务器上)。
  • Ab3d.DXEngine 和 Ab3d.PowerToys 可以在旧的 .Net 版本上运行,包括 .Net Framework 4.5+。

Ab4d.SharpEngine 的优点

  • Ab4d.SharpEngine 可以在多个平台上运行。您可以开始为 Windows 编写代码,然后只需添加对 Linux、macOS、Android 和 iOS 的支持。或者将应用程序的一小部分移植到其他平台。
  • Ab4d.SharpEngine 使用 Vulkan API,这是最先进的图形 API。随着新版本显卡的发布,它正在积极开发并获得新功能。这提供了支持所有当前和未来图形功能的选项(例如光线追踪 - DirectX 11 无法实现)。
  • 如前所述,Ab4d.SharpEngine 有一个非常简洁易用的编程 API。 
  • 使用 WPF 对象非常慢(访问 DependencyProperties 有很多开销)。此外,Ab3d.DXEngine 需要将所有 WPF 对象转换为它自己的对象。在 Ab4d.SharpEngine 中处理对象要快得多。
  • Vulkan 是比 DirectX 11 快得多的图形 API。虽然 Ab4d.SharpEngine 还没有使用所有最快的算法(没有多线程),但未来该引擎将比 Ab3d.DXEngine 快得多。
  • Ab4d.SharpEngine 建立在 .NET 6 之上,由于使用了 System.Numerics、Span 和其他改进的 .NET 功能,它提供了许多性能优势。
  • 未来 Ab4d.SharpEngine 将提供比 Ab3d.DXEngine 和 Ab3d.PowerToys 更多的功能。

 

因此,如果您有一个使用 Ab3d.PowerToys 和 Ab3d.DXEngine 的大型复杂应用程序,我不建议您尝试将其移植到新引擎。您不能只是将代码复制并粘贴到新引擎中。尽管两个引擎的思想和原理仍然相同,例如有 TargetPositionCamera 和 MouseCameraController - 两者具有几乎相同的属性和方法。但也有许多较小的差异,例如 BoxVisual3D 现在是 BoxModelNode。无论如何,如果您知道如何使用现有引擎,您也会对新引擎感到非常熟悉。

但是,如果您开始构建具有 3D 图形的新应用程序或希望将大型应用程序的较小部分(例如具有一些附加功能的查看器)移植到更移动的格式,那么新引擎是一个完美的选择为了那个原因。此外,如果您对如何在 .NET 中为其他平台进行编程感到好奇,或者在 12 月会有更多时间,如果您可以试用新引擎并提供一些反馈,我将非常高兴(您也可以使用讨论或在 GitHub 上发布问题,或者简单地使用电子邮件、论坛或反馈表)。

但请不要要求太高。这是第一个公开测试版,有些东西可能无法按预期工作。在这些情况下,请参阅 GitHub 上的故障排除部分以获取更多信息。

 

让我也分享一下新引擎的计划路线图。

在接下来的几周和几个月里,我将尝试发布包含修复和改进的新测试版。几个月后,可能在 2023 年第二季度或第三季度,应该会发布第一个生产就绪版本。也许引擎的某些部分仍将处于测试阶段,例如 AvaloniaUI、MAUI、macOS 和 iOS 支持。计划是让主要和最常见的部分准备好投入生产:Windows(WPF、WinForms、SDL、Glfw)、主要的 Linux 发行版(SDL、Glfw)和 Android。 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaEE 初阶 — 线程安全的集合类

文章目录1. 多线程环境使用 ArrayList多线程使用队列3. 多线程环境使用哈希表3.1 Hashtable3.2 ConcurrentHashMap4. 相关面试题1. 多线程环境使用 ArrayList java 标准库里的大部分集合类都是 “线程不安全” 的。 多个线程使用同一个集合类对象,很有可能会出问题。…

WebDAV之葫芦儿·派盘+Air Explorer

Air Explorer 支持WebDAV方式连接葫芦儿派盘。 电脑本地硬盘不够,网盘云存储已经成为存储的一种趋势。网盘限额,数据存在多个网盘内,操作麻烦还费事。 Airexplorer可以完美解决这个困扰。Air Explorer是一款非常不错的云存储账户管理软件,常见的在线云存储服务器都支持;还…

六道算法基础题详解

目录 1.力扣第217题:存在重复元素 2.力扣第53题:最大子数组和 3.力扣第1题:两数之和 4.力扣第88题:合并两个有序数组 5.牛客BM1题:反转链表 6.牛客BM2题:链表内指定区间反转 1.力扣第217题&#xff1…

6.1、应用层概述

1、基本概述 应用层是计算机网络体系结构的最顶层\color{red}最顶层最顶层,是设计和建立计算机网络的最终目的\color{red}设计和建立计算机网络的最终目的设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。 早期基于文本的应用(电子邮件…

RNNoise:学习噪声抑制

目录 1. RNNoise简介 2. 噪声抑制 3. 深度学习和循环神经网络 4. 一种混合的方法 6. 关于数据集 7. 从python到C语言 8. 其他资源 RNNoise:学习噪声抑制 原文地址:RNNoise: Learning Noise Suppression (jmvalin.ca) 1. RNNoise简介 该例子展示…

共享购深度解析——新玩法解读

共享经济模式以合理配置网络资源、减少销售市场交易费用、推动私营经济强势来袭等优点颠覆性创新地严重影响传统商业模式,根据“自由者”的协同,共享经济模式给供需彼此更自由选择和由上而下的制度变革,提高了经济形势高效率,变成…

Pytorch 环境和分布偏移与错误使用机器学习例子

假设我们训练了一个贷款申请人违约风险模型,用来预测谁将偿还贷款或违约。 这个模型发现申请人的鞋子与违约风险相关(穿牛津鞋申请人会偿还,穿运动鞋申请人会违约)。 此后,这个模型可能倾向于向所有穿着牛津鞋的申请人…

代码随想录算法训练营第十六天二叉树 java : 104.二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

文章目录前言深度是个啥,高度又是啥Leetcode 104.二叉树的最大深度题目讲解Leetcode 111.二叉树的最小深度题目讲解Leetcode 222.完全二叉树的节点个数(优先掌握递归题目讲解总结前言 今天将主要围绕 深度和高度 来展开 复习一下递归三部曲 确定递归函…

已解决微软Office2016 Excel卡顿\缓慢、打开第二个文件加载很慢问题(亲测有效)

已解决微软Office2016 Excel卡顿\缓慢、打开第二个文件加载很慢问题(亲测有效) 文章目录问题描述问题分析解决方法1解决方法2解决方法31) 修改基本设置2)修改配置文件问题描述 我的电脑环境是:Windows 10 Excel 2016版本。 文件…

【前端之旅】Nginx快速入门

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

【Blender UV映射02】智能UV映射 创建和应用法线纹理

写在前面 前面的学习记录: 【Blende UV映射01】创建UV 使用UV贴图处理纹理 依旧是跟着Blender 2.8 UV Mapping教程,本文是教程的P8-P12的过程记录。 1 一些操作记录 调整滚轮缩放 如果发现Blender缩放过快, 键盘的"/"数字键…

Java并发编程实战 学习笔记 Day7

并发编程是比较进阶的知识,涉及到很多底层的东西,学习起来是比较困难的。并发编程的bug更多的是偶发性的,很难复现,排查起来也很困难,要想快速解决问题,就要理解并发编程的本质,追本溯源&#x…

Android ANR bugreport log分析

最近工作中频繁遇到设备ANR问题,而且是概率性的那种,于是决定花点时间找找规律复现分析下 说道这里,抓日志是问题解决的最有效途径,这里不得不说一下 bugreport log,其实网上关于它的分析方法有很多,在此仅仅是为了记录…

小型水库在线监测解决方案

一、方案背景水利部全国水利普查显示我国共有水库98002座,其中小型水库93308座。水库对防汛减灾、供水保障和农业灌溉等至关重要,水库的稳定运行关系到下游人民群众的生命财产安全,关系到当地经济发展和社会稳定。在2020年11月18日国务院常务…

EasyVim:简单强大的VIM配置

EasyVim 简单强大的vim配置,熟练后可大大提高开发效率(VS Code的两倍以上)。 安装 安装过程需要从github下载很多插件,国内尽量挂VPN git clone https://github.com/yuesong-feng/EasyVim cd EasyVim/ sh ./install.sh vim :P…

JavaScript基础(16)_数组方法、数组遍历、foreach

数组方法unshift():向数组开头添加一个或多个元素,并返回新的数组长度。向前边插入元素以后,其他的元素索引会依次调整。push():向数组的末尾添加一个或多个元素,并返回数组新的长度。该方法会将数组新的长度作为返回值返回。shift():删除数组…

【工具推荐】 Obsidian 插件 Obsidian to Flomo 一键同步内容到 Flomo 插件

目录一、Obsidian、Flomo、Obsidian to Flomo 他们都是什么?1. 什么是 Obsidian ?2. 什么是Flomo ?3. 什么是Obsidian to Flomo ?二、如何安装 Obsidian to Flomo ?三、插件使用方法1. 启用插件并配置API四、如何使用插…

《2022大数据产业年度创新技术突破》榜重磅发布丨金猿奖

‍年度金猿榜单/奖项本届“数据猿年度金猿策划活动——2022大数据产业创新技术突破榜单/奖项”由金猿&数据猿共同推出。‍数据智能产业创新服务媒体——聚焦数智 改变商业2022年下半年度,由数据猿、金猿组委会共同推出的第五届 “年度金猿季大型主题策划活动”…

Unity Netcode for GameObjects多人联机(源文件)

一、安装Netcode for Gameobjects Netcode for Gameobjects是Unity新推出的联机解决方案,该解决方案目前处于初期,相关功能不是很完善,但是用起来还不错。下面介绍一下相关用法。 首先下载安装Netcode for Gameobjects,其官方网站…

Elasticsearch入门介绍及Linux安装

前言Elasticsearch是一款分布式高性能的全文搜索引擎,为什么会需要这个呢,像我们平常使用的最多的存储工具就是Mysql,在业界也是非常有名的,我们大部分结构化数据都是用它来存储的,sql语言的操作也是非常方便&#xff…