一个简单、轻量级的用于Panda3D的PBR渲染管道
panda3d-simplepbr的Python项目详细描述
panda3d simplepbr公司
这是一个用于Panda3D的简单、基本、轻量级、无装饰的PBR呈现管道。 它目前打算与panda3d-gltf一起使用,它将以正确的顺序输出纹理。 PBR着色器深受Khronos glTF Sample Viewer的启发。 注意:此项目不尝试匹配引用呈现器。在
特点
- 支持在多种硬件上运行,并具有简单的OpenGL 2.1+要求
- 前涂金属粗糙PBR
- 所有Panda3D光源类型(点光源、定向光源、聚光灯和环境光灯)
- 电影色调映射
- 法线贴图
- 发射贴图
- 遮挡贴图
- 方向光和聚光灯的基本阴影贴图
著名的TODO
还有几件大事还没有完成,计划实施:
- 点光源的阴影贴图
- IBL漫反射
- IBL镜面反射
其他缺少的功能
我们的目标是保持这个简单和轻量级。 因此,以下缺少的功能是not,目前在路线图中:
- 处理多个灯光(例如,延迟、转发+、平铺、群集等)
- 奇特的后期处理效果(时间消除混叠、环境光遮挡、屏幕空间反射)
- 环境探测器
安装
使用pip安装panda3d-simplepbr
包:
pip install panda3d-simplepbr
要获取最新的开发版本,请使用:
^{pr2}$使用
只需将simplepbr.init()
添加到ShowBase
实例中:
fromdirect.showbase.ShowBaseimportShowBaseimportsimplepbrclassApp(ShowBase):def__init__(self):super().__init__()simplepbr.init()
init()
函数将选择典型的默认值,但可以通过关键字参数修改以下内容:
render_node
:也要附加着色器的节点,如果None
,则默认为base.render
window
:附加帧缓冲区的窗口也默认为base.win
,如果None
camera_node
:渲染场景时要使用的摄影机的节点路径,默认为base.cam
,如果None
msaa_samples
:用于多采样消除混叠的采样数,默认为4
max_lights
:要渲染的最大灯光数,默认为8
use_normal_maps
:使用法线贴图修改片段法线,默认为False
(注意:需要定义了适当切线的模型)
use_emission_maps
使用发射贴图,默认为True
use_occlusion_maps
使用遮挡贴图,默认为False
(注意:需要金属粗糙度贴图中的遮挡通道)
enable_shadows
:启用阴影贴图支持(使用点光源打断),默认为False
enable_fog
:启用指数雾,默认为False
exposure
:用于在色调映射之前乘以屏幕空间颜色值的值,默认为1.0
以后还可以通过设置init()函数返回的simplepbr管道的相关属性来修改这些参数:
pipeline=simplepbr.init()...pipeline.use_normals_map=True
纹理
着色器当前假定以下纹理位于这些插槽中:
- 基色
- 金属粗糙度
- 法线
- 排放
示例
对于使用panda3d-simplepbr
的示例应用程序,请查看panda3d-gltf repo中的viewer。在
分发
当使用Panda3D的build_apps
时,默认情况下不会复制数据文件(即着色器文件)。
我们正在探索使其更加自动化的选项,但目前,请将以下内容添加到setup.py
:
setup(# ...'package_data_dirs':{'simplepbr':[('simplepbr/shaders*','',{}),],}# ...)
运行测试
python setup.py test
许可证
- 项目
标签: