1.MMDetection3D之DETR3D源码解析:整体流程篇
2.[技术随笔]🛠🛠从源码安装Pytorch3D详细记录及学习资料
3.VR成品源码是实物什么意思
4.3D月光宝盒游戏机模拟器方案源码项目解析(1)
5.[3D游戏开发实践] Cocos Cyberpunk 源码解读-目录结构
6.《Unity 3D 内建着色器源码剖析》第七章 Unity3D全局光照和阴影
MMDetection3D之DETR3D源码解析:整体流程篇
关于torch.distributed.launch的更多细节: blog.csdn.net/magic_ll/...
设置config file和work dir,work dir保存最终config,实物log等信息,实物work dir默认为path/to/user/work_dir/
作者将自定义的实物部分放在 'projects/mmdet3d_plugin/' 文件夹下,通过registry类注册模块,实物这里利用importlib导入模块并初始化自定义的实物如何封装app源码类。
这里设置模型的实物输出信息保存路径、gpus等模型的实物运行时环境参数
这里初始化模型,初始化train_dataset和val_dataset
这部分完成了DataLoader的实物初始化,runner和hooks的实物初始化,并且按照workflow运行runner。实物
[技术随笔]🛠🛠从源码安装Pytorch3D详细记录及学习资料
这篇文章详细介绍了如何从源码安装Pytorch3D,实物包括选择合适的实物镜像、配置工具和编译步骤。实物首先,实物选择Pytorch 1.9的devel镜像,包含CUDA和驱动,确保与Pytorch3D的版本要求相匹配,比如Python 3.7和CUDA .2。在镜像内,需要检查nvcc编译器、CUDA工具箱和驱动是否正常,同时安装基本工具如git、vim、sudo和curl。
配置CUB工具是关键步骤,根据Pytorch3D文档,需要在编译前设置CUB_HOME。即使Pytorch镜像自带CUDA,也建议手动设置`FORCE_CUDA`为1以确保兼容。接着,如果遇到conda依赖问题,错切变换源码作者选择从源码编译Pytorch3D,编译过程中的安装log和版本检查是必要的。
最后,通过测试用例,如从ARkit导出数据并渲染白模,验证GPU的使用。结果显示GPU正常工作,安装成功。对于更深入的Pytorch3D使用,作者还分享了一些参考资源,以便初学者入门。
VR成品源码是什么意思
VR成品网站源码并不是视频的唯一来源。实际上,VR成品网站源码通常是由专业的VR开发团队或公司开发的,他们使用专门的VR技术来创建虚拟现实体验。这些体验通常包括3D图像、声音、交互式传感器等元素,以提供身临其境的体验。
然而,除了VR成品网站源码,视频也可以成为VR体验的一部分。例如,一些VR网站可能会提供一段视频,用户可以通过VR设备观看。这些视频可以是任何类型的内容,如娱乐、教育、商业广告等。同时,开发人员也可以自己制作VR视频并将其嵌入到自己的某公司网站源码网站中。
因此,可以说VR成品网站源码并不是唯一的视频来源,开发者也可以通过其他方式创建自己的VR体验。需要注意的是,为了确保用户能够安全、舒适地体验VR内容,开发者需要遵循一定的技术标准和最佳实践。
3D月光宝盒游戏机模拟器方案源码项目解析(1)
月光宝盒游戏机项目凭借其年以上的历史和市场认可度,展现出了强大的商业潜力。虽然小霸王等知名品牌加入,但实际成本远低于售价,显示出该项目的盈利空间巨大。月光宝盒主要由硬件和软件两部分构成。
硬件方面,常见方案包括通过HDMI连接显示器和手柄。软件则涉及定制安卓系统,实现独特的月光宝盒界面。界面设计通常包括一个可交互的桌面launcher,如极简风格的metro风格,可通过ricegame.cn下载的app查看。
软件的核心是模拟器,米饭模拟器方案覆盖了众多游戏格式,如街机、GBA、NDS等,能支持数万游戏,为项目增添了极高的可玩性和吸引力。然而,自行适配开源游戏ROM不仅耗时且成本高昂,而米饭模拟器方案则提供了一站式解决方案,降低了风险和成本预估。卡巴拉岛源码
为了优化硬件成本,推荐使用性价比高的firefly rk芯片,它能满足大部分模拟器需求。尽管使用更高性能的芯片能提升用户体验,但firefly rk已经达到了极佳的性价比。如有任何疑问,可参考ricegame.cn获取更多信息。
[3D游戏开发实践] Cocos Cyberpunk 源码解读-目录结构
在深入解读Cocos Cyberpunk源码之前,首先,让我们打开scene-game-start场景,启动游戏预览,进入游戏场景。点击START按钮,游戏正式开始。漫游摄像机将带你漫游整个场景,再次点击START,可以进入游戏。
在电脑端按ESC键或手机端点击设置按钮,查看操作说明。接下来,让我们浏览Cocos Cyberpunk项目的目录结构。在左下角的Assets窗口中,我们可以看到项目文件的分层。
首先,animations目录中仅包含用于场景漫游的摄像机动画文件。LightFX目录存储了光照贴图,这些是光照烘焙系统自动生成的,无需手动修改。res目录是整个游戏资源的集中地,包括动画、特效、emui源码是什么模型、shader、UI、音效等资源。
resources目录则存放动态加载的资源,当前内容较少,随着游戏的完善,资源将会增多。scene目录包含了环境反射探针文件,与场景文件名对应的文件夹存放反射贴图。scene-development目录则包含一些用于单元测试的开发场景。
scripts目录存放所有游戏逻辑脚本,而src目录可能包含项目开发过程中的测试文件。test目录同样是用于测试的,存放的文件与项目无关。scene目录则是游戏主场景,而scene-game-start则为游戏启动场景,进行UI逻辑初始化,并加载游戏主场景。
自定义管线以编辑器扩展的形式存在,可将其移至项目中。管线对应自定义管线,通过在场景中新建节点并添加pipeline/graph/pipeline-graph.ts组件来查看可视化管线图。实时探针相关组件在反射探针节点上挂载,提供实时更新功能。
反射探针节点上的ReflectionUtils脚本组件实现了实时更新探针的逻辑,适用于需要实时探针的项目。此外,Cocos Cyberpunk还实现了SphereProjection修正,使得反射更符合物体形状。
静态遮挡剔除机制在Cocos Cyberpunk中实现,通过将可见关系预存入空间格子,渲染时直接查表获得渲染列表,极大提升效率。这一部分主要在scene场景中的static-occlusion-culling结点中处理。
机型适配策略在Cocos Cyberpunk中实现,根据设备性能选择渲染效果,确保流畅帧率。处理了不同设备上的效果调整,包括性能开关策略、机型分档策略,主要在href-settings.ts、gpu.ts和gpu-mobiles.ts文件中实现。
游戏逻辑方面,Cocos Cyberpunk包含完整的TPS游戏逻辑,init节点包含了特效、UI、对象池等节点,挂载的init.ts脚本组件确保游戏逻辑在主场景加载后持续运行。接下来,我们将对游戏逻辑相关源码进行深入解读。
《Unity 3D 内建着色器源码剖析》第七章 Unity3D全局光照和阴影
在Unity 3D中,全局光照和阴影是实现逼真渲染的重要手段。全局光照分为烘焙式和实时两种方式。静态物体通过烘焙式全局照明(Baked GI)处理,预先计算间接照明并存储,而动态物体则通过光探针获取静态物体的反射光。引擎提供了点光源、聚光灯、有向平行光源和区域面光源等光源类型,其中环境光源与天空盒系统关联,可模拟日出日落效果。
实时光照模式下的光源仅产生直接照明,不涉及间接照明,但在Unity 3D的Lighting设置中,勾选Realtime Global Illumination选项,可实现全局照明,主要适用于主机平台游戏。烘焙式光照贴图通过预先计算并存储直接和间接照明信息,节省运行时计算,但内存占用较大。
混合光照模式允许光源实时调整属性,提供动态照明,包括Baked Indirect(仅预计算间接照明)、Shadowmask(预计算静态阴影)和Subtractive(烘焙光源信息)等。其中,Shadowmask存储静态阴影信息,Subtractive模式下动态阴影实时投射到静止物体。
光探针技术弥补了光照贴图对动态物体的限制,通过预计算并插值光照信息,提供更真实的动态物体照明效果。然而,光探针有其局限性,如不适用于大物体内部和大凹面表面。此外,还有反射用光探针,用于环境映射。
渲染阴影功能通过光源空间和屏幕空间确定阴影区域,使用阴影贴图(如阴影映射)和层叠式阴影贴图技术来减少透视走样的问题,提高渲染效率和精度。通过这些技术,Unity 3D能为游戏场景提供丰富多样的光照效果和阴影细节。
3d稀疏卷积——spconv源码剖析(三)
构建Rulebook
下面看ops.get_indice_pairs,位于:spconv/ops.py
构建Rulebook由ops.get_indice_pairs接口完成
get_indice_pairs函数具体实现:
主要就是完成了一些参数的校验和预处理。首先,对于3d普通稀疏卷积,根据输入shape大小,kernel size,stride等参数计算出输出输出shape,子流行稀疏卷积就不必计算了,输出shape和输入shape一样大小
准备好参数之后就进入最核心的get_indice_pairs函数。因为spconv通过torch.ops.load_library加载.so文件注册,所以这里通torch.ops.spconv.get_indice_pairs这种方式来调用该函数。
算子注册:在src/spconv/all.cc文件中通过Pytorch提供的OP Register(算子注册的方式)对底层c++ api进行了注册,可以python接口形式调用c++算子
同C++ extension方式一样,OP Register也是Pytorch提供的一种底层扩展算子注册的方式。注册的算子可以通过 torch.xxx或者 tensor.xxx的方式进行调用,该方式同样与pytorch源码解耦,增加和修改算子不需要重新编译pytorch源码。用该方式注册一个新的算子,流程非常简单:先编写C++相关的算子实现,然后通过pytorch底层的注册接口(torch::RegisterOperators),将该算子注册即可。
构建Rulebook实际通过python接口get_indice_pairs调用src/spconv/spconv_ops.cc文件种的getIndicePairs函数
代码位于:src/spconv/spconv_ops.cc
分析getIndicePairs直接将重心锁定在GPU逻辑部分,并且子流行3d稀疏卷积和正常3d稀疏卷积分开讨论,优先子流行3d稀疏卷积。
代码中最重要的3个变量分别为:indicePairs,indiceNum和gridOut,其建立过程如下:
indicePairs代表了稀疏卷积输入输出的映射规则,即Input Hash Table 和 Output Hash Table。这里分配理论最大的内存,它的shape为{ 2,kernelVolume,numAct},2表示输入和输出两个方向,kernelVolume为卷积核的volume size。例如一个3x3x3的卷积核,其volume size就是(3*3*3)。numAct表示输入有效(active)特征的数量。indiceNum用于保存卷积核每一个位置上的总的计算的次数,indiceNum对应中的count
代码中关于gpu建立rulebook调用create_submconv_indice_pair_cuda函数来完成,下面具体分析下create_submconv_indice_pair_cuda函数
子流线稀疏卷积
子流线稀疏卷积是调用create_submconv_indice_pair_cuda函数来构建rulebook
在create_submconv_indice_pair_cuda大可不必深究以下动态分发机制的运行原理。
直接将重心锁定在核函数:
prepareSubMGridKernel核函数中grid_size和block_size实则都是用的整形变量。其中block_size为tv::cuda::CUDA_NUM_THREADS,在include/tensorview/cuda_utils.h文件中定义,大小为。而grid_size大小通过tv::cuda::getBlocks(numActIn)计算得到,其中numActIn表示有效(active)输入数据的数量。
prepareSubMGridKernel作用:建立输出张量坐标(通过index表示)到输出序号之间的一张哈希表
见:include/spconv/indice.cu.h
这里计算index换了一种模板加递归的写法,看起来比较复杂而已。令:new_indicesIn = indicesIn.data(),可以推导得出index为:
ArrayIndexRowMajor位于include/tensorview/tensorview.h,其递归调用写法如下:
接着看核函数getSubMIndicePairsKernel3:
位于:include/spconv/indice.cu.h
看:
上述写法类似我们函数中常见的循环的写法,具体可以查看include/tensorview/kernel_utils.h
NumILP按默认值等于1的话,其stride也是gridDim.x*blockDim.x。索引最大值要小于该线程块的线程上限索引blockDim.x * gridDim.x,功能与下面代码类似:
参考: blog.csdn.net/ChuiGeDaQ...
[3D游戏开发实践] Cocos Cyberpunk 源码解读-开篇
Cocos Cyberpunk是Cocos引擎官方团队精心打造的一款完整开源第三人称射击类3D游戏,旨在展示引擎的重度3D游戏制作能力,增强社区的学习动力。此游戏支持Web、iOS、Android等多平台发布。
本系列文章将对Cocos Cyberpunk的源码进行深入解读,帮助读者提高学习效率,加速在3D游戏开发领域的进步。
如需获取源码,请访问工程源码免费下载页面。
麒麟鸽,即我,将在此系列文章中,分享如何在3D游戏开发过程中充分利用Cocos Cyberpunk的技术资产,包括但不限于:
完整TPS游戏核心
尽管角色控制尚有提升空间,Cocos Cyberpunk已具备完整的射击游戏逻辑,可作为学习资源或项目开发的基础。
机型适配机制
3D游戏对设备性能要求较高,Cocos Cyberpunk中实现了机型分档和性能开关策略,帮助开发者在不同设备上调整画质和保持帧率。
自定义管线
借助Cocos Creator 3.7提供的全新自定义管线,Cocos Cyberpunk实现了一个良好的隔离性解决方案,可直接复用或作为研究新管线的案例。
加强版反射探针
预先烘焙的反射探针,简化了物体反射周围景物的实现,且性能优化显著,是不可多得的实用特性。
静态遮挡剔除(PVS-SOC)
通过预存可见关系,Cocos Cyberpunk实现了快速渲染物体的机制,尤其适用于建筑密集的场景,显著提升了效率。
更多技术资产
考虑到时间有限,Cocos Cyberpunk中未使用光照探针和LOD,但未来我将寻找合适案例进行分享。我相信,此项目还蕴含更多技术宝藏等待挖掘。
在接下来的文章中,我将深入研究以上技术点,并与大家共同探讨学习,期望能为你的3D游戏开发之路提供助力。