Skip to content

Commit d952148

Browse files
committed
move renderer config to global
1 parent 4c8ef20 commit d952148

File tree

7 files changed

+62
-26
lines changed

7 files changed

+62
-26
lines changed

include/sapien/sapien_renderer/sapien_renderer_default.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ class SapienRendererDefault {
1212
public:
1313
static SapienRendererDefault &Get();
1414

15+
static void setGlobalConfig(bool offscreenOnly, int32_t maxNumMaterials, uint32_t maxNumTextures,
16+
uint32_t defaultMipMaps, std::string const &device,
17+
bool doNotLoadTexture);
18+
static bool getOffscreenOnly();
19+
static uint32_t getDefaultMipMaps();
20+
static std::string getDevice();
21+
static bool getDoNotLoadTexture();
22+
static uint32_t getMaxNumMaterials();
23+
static uint32_t getMaxNumTextures();
24+
1525
static void setImguiIniFilename(std::string const &filename);
1626
static std::string getImguiIniFilename();
1727

@@ -39,6 +49,13 @@ class SapienRendererDefault {
3949
static void internalSetShaderSearchPath(std::string const &dir);
4050

4151
public:
52+
bool offscreenOnly = false;
53+
uint32_t defaultMipMaps = 1;
54+
std::string device = "";
55+
bool doNotLoadTexture = false;
56+
uint32_t maxNumMaterials = 128;
57+
uint32_t maxNumTextures = 512;
58+
4259
std::string viewerShaderDirectory{};
4360
std::string cameraShaderDirectory{};
4461
std::unordered_map<std::string, vk::Format> renderTargetFormats;

include/sapien/sapien_renderer/sapien_renderer_system.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,9 @@ class SapienRenderCubemap;
2323

2424
class SapienRenderEngine {
2525
public:
26-
static std::shared_ptr<SapienRenderEngine>
27-
Get(bool offscreenOnly = false, uint32_t maxNumMaterials = 512, uint32_t maxNumTextures = 128,
28-
uint32_t defaultMipLevels = 1, std::string const &device = "",
29-
bool doNotLoadTexture = false);
26+
static std::shared_ptr<SapienRenderEngine> Get();
3027

31-
SapienRenderEngine(bool offscreenOnly, uint32_t maxNumMaterials, uint32_t maxNumTextures,
32-
uint32_t defaultMipLevels, std::string const &device, bool doNotLoadTexture);
28+
SapienRenderEngine();
3329

3430
std::shared_ptr<svulkan2::core::Context> getContext() const { return mContext; }
3531
std::shared_ptr<svulkan2::resource::SVResourceManager> getResourceManager() const {

python/py_package/__init__.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ from . import utils
3535
from . import version
3636
from . import wrapper
3737
__all__ = ['ActorBuilder', 'ArticulationBuilder', 'Component', 'CudaArray', 'Engine', 'Entity', 'Path', 'PinocchioModel', 'Pose', 'SapienRenderer', 'Scene', 'SceneConfig', 'System', 'Widget', 'asset', 'internal_renderer', 'math', 'os', 'physx', 'pkg_resources', 'platform', 'profile', 'pysapien', 'pysapien_pinocchio', 'render', 'render_server', 'set_cuda_tensor_backend', 'set_log_level', 'simsense', 'utils', 'version', 'warn', 'wrapper']
38-
__version__: str = '3.0.0.dev20240119+1bba5fa8'
38+
__version__: str = '3.0.0.dev20240122+a8854ccd'

python/py_package/pysapien/render.pyi

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import pybind11_stubgen.typing_ext
44
import sapien.pysapien
55
import sapien.pysapien.internal_renderer
66
import typing
7-
__all__ = ['RenderBodyComponent', 'RenderCameraComponent', 'RenderCameraGroup', 'RenderCubemap', 'RenderCudaMeshComponent', 'RenderDirectionalLightComponent', 'RenderLightComponent', 'RenderMaterial', 'RenderParallelogramLightComponent', 'RenderPointCloudComponent', 'RenderPointLightComponent', 'RenderShape', 'RenderShapeBox', 'RenderShapeCapsule', 'RenderShapeCylinder', 'RenderShapePlane', 'RenderShapeSphere', 'RenderShapeTriangleMesh', 'RenderShapeTriangleMeshPart', 'RenderSpotLightComponent', 'RenderSystem', 'RenderSystemGroup', 'RenderTexture', 'RenderTexture2D', 'RenderTexturedLightComponent', 'RenderWindow', 'SapienRenderer', 'clear_cache', 'get_camera_shader_dir', 'get_device_summary', 'get_imgui_ini_filename', 'get_msaa', 'get_ray_tracing_denoiser', 'get_ray_tracing_dof_aperture', 'get_ray_tracing_dof_plane', 'get_ray_tracing_path_depth', 'get_ray_tracing_samples_per_pixel', 'get_viewer_shader_dir', 'load_scene', 'set_camera_shader_dir', 'set_imgui_ini_filename', 'set_log_level', 'set_msaa', 'set_picture_format', 'set_ray_tracing_denoiser', 'set_ray_tracing_dof_aperture', 'set_ray_tracing_dof_plane', 'set_ray_tracing_path_depth', 'set_ray_tracing_samples_per_pixel', 'set_viewer_shader_dir']
7+
__all__ = ['RenderBodyComponent', 'RenderCameraComponent', 'RenderCameraGroup', 'RenderCubemap', 'RenderCudaMeshComponent', 'RenderDirectionalLightComponent', 'RenderLightComponent', 'RenderMaterial', 'RenderParallelogramLightComponent', 'RenderPointCloudComponent', 'RenderPointLightComponent', 'RenderShape', 'RenderShapeBox', 'RenderShapeCapsule', 'RenderShapeCylinder', 'RenderShapePlane', 'RenderShapeSphere', 'RenderShapeTriangleMesh', 'RenderShapeTriangleMeshPart', 'RenderSpotLightComponent', 'RenderSystem', 'RenderSystemGroup', 'RenderTexture', 'RenderTexture2D', 'RenderTexturedLightComponent', 'RenderWindow', 'SapienRenderer', 'clear_cache', 'get_camera_shader_dir', 'get_device_summary', 'get_imgui_ini_filename', 'get_msaa', 'get_ray_tracing_denoiser', 'get_ray_tracing_dof_aperture', 'get_ray_tracing_dof_plane', 'get_ray_tracing_path_depth', 'get_ray_tracing_samples_per_pixel', 'get_viewer_shader_dir', 'load_scene', 'set_camera_shader_dir', 'set_global_config', 'set_imgui_ini_filename', 'set_log_level', 'set_msaa', 'set_picture_format', 'set_ray_tracing_denoiser', 'set_ray_tracing_dof_aperture', 'set_ray_tracing_dof_plane', 'set_ray_tracing_path_depth', 'set_ray_tracing_samples_per_pixel', 'set_viewer_shader_dir']
88
M = typing.TypeVar("M", bound=int)
99
N = typing.TypeVar("N", bound=int)
1010
class RenderBodyComponent(sapien.pysapien.Component):
@@ -807,7 +807,7 @@ class RenderWindow:
807807
def super(self) -> bool:
808808
...
809809
class SapienRenderer:
810-
def __init__(self, offscreen_only: bool = False, max_num_materials: int = 128, max_num_textures: int = 512, default_mipmap_levels: int = 1, default_device: str = '', do_not_load_texture: bool = False) -> None:
810+
def __init__(self) -> None:
811811
...
812812
@property
813813
def _internal_context(self) -> sapien.pysapien.internal_renderer.Context:
@@ -840,6 +840,10 @@ def load_scene(filename: str, apply_scale: bool = True) -> dict:
840840
...
841841
def set_camera_shader_dir(dir: str) -> None:
842842
...
843+
def set_global_config(offscreen_only: bool = False, max_num_materials: int = 128, max_num_textures: int = 512, default_mipmap_levels: int = 1, default_device: str = '', do_not_load_texture: bool = False) -> None:
844+
"""
845+
Sets global properties for SAPIEN renderer. This function should only be called before creating any renderer-related objects.
846+
"""
843847
def set_imgui_ini_filename(filename: str) -> None:
844848
...
845849
def set_log_level(level: str) -> None:

python/pybind/sapien_renderer.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,14 @@ void init_sapien_renderer(py::module &sapien) {
389389
return parseSceneNode(*root);
390390
},
391391
py::arg("filename"), py::arg("apply_scale") = true)
392-
.def("get_device_summary", []() { return SapienRenderEngine::Get()->getSummary(); });
392+
.def("get_device_summary", []() { return SapienRenderEngine::Get()->getSummary(); })
393+
394+
.def("set_global_config", &SapienRendererDefault::setGlobalConfig,
395+
py::arg("offscreen_only") = false, py::arg("max_num_materials") = 128,
396+
py::arg("max_num_textures") = 512, py::arg("default_mipmap_levels") = 1,
397+
py::arg("default_device") = "", py::arg("do_not_load_texture") = false,
398+
"Sets global properties for SAPIEN renderer. This function should only be called "
399+
"before creating any renderer-related objects.");
393400

394401
////////// end global //////////
395402

@@ -447,11 +454,7 @@ void init_sapien_renderer(py::module &sapien) {
447454

448455
auto PyRenderWindow = py::class_<SapienRendererWindow>(m, "RenderWindow");
449456

450-
PySapienRenderer
451-
.def(py::init(&SapienRenderEngine::Get), py::arg("offscreen_only") = false,
452-
py::arg("max_num_materials") = 128, py::arg("max_num_textures") = 512,
453-
py::arg("default_mipmap_levels") = 1, py::arg("default_device") = "",
454-
py::arg("do_not_load_texture") = false)
457+
PySapienRenderer.def(py::init(&SapienRenderEngine::Get))
455458
.def_property_readonly("_internal_context", &SapienRenderEngine::getContext);
456459

457460
PyRenderSystemGroup.def(py::init<std::vector<std::shared_ptr<SapienRendererSystem>>>())

src/sapien_renderer/sapien_renderer_default.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,25 @@ namespace fs = std::filesystem;
77
namespace sapien {
88
namespace sapien_renderer {
99

10+
void SapienRendererDefault::setGlobalConfig(bool offscreenOnly, int32_t maxNumMaterials,
11+
uint32_t maxNumTextures, uint32_t defaultMipMaps,
12+
std::string const &device, bool doNotLoadTexture) {
13+
auto &d = Get();
14+
d.offscreenOnly = offscreenOnly;
15+
d.defaultMipMaps = defaultMipMaps;
16+
d.device = device;
17+
d.doNotLoadTexture = doNotLoadTexture;
18+
d.maxNumMaterials = maxNumMaterials;
19+
d.maxNumTextures = maxNumTextures;
20+
}
21+
22+
bool SapienRendererDefault::getOffscreenOnly() { return Get().offscreenOnly; }
23+
uint32_t SapienRendererDefault::getDefaultMipMaps() { return Get().defaultMipMaps; }
24+
std::string SapienRendererDefault::getDevice() { return Get().device; }
25+
bool SapienRendererDefault::getDoNotLoadTexture() { return Get().doNotLoadTexture; }
26+
uint32_t SapienRendererDefault::getMaxNumMaterials() { return Get().maxNumMaterials; }
27+
uint32_t SapienRendererDefault::getMaxNumTextures() { return Get().maxNumTextures; }
28+
1029
void SapienRendererDefault::setViewerShaderDirectory(std::string const &dir) {
1130
auto path = fs::path(dir);
1231
if (!fs::is_directory(path)) {

src/sapien_renderer/sapien_renderer_system.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "sapien/sapien_renderer/light_component.h"
66
#include "sapien/sapien_renderer/point_cloud_component.h"
77
#include "sapien/sapien_renderer/render_body_component.h"
8+
#include "sapien/sapien_renderer/sapien_renderer_default.h"
89
#include <svulkan2/core/context.h>
910
#include <svulkan2/core/physical_device.h>
1011
#include <svulkan2/renderer/renderer.h>
@@ -18,17 +19,13 @@
1819
namespace sapien {
1920
namespace sapien_renderer {
2021

21-
std::shared_ptr<SapienRenderEngine>
22-
SapienRenderEngine::Get(bool offscreenOnly, uint32_t maxNumMaterials, uint32_t maxNumTextures,
23-
uint32_t defaultMipLevels, std::string const &device,
24-
bool doNotLoadTexture) {
22+
std::shared_ptr<SapienRenderEngine> SapienRenderEngine::Get() {
2523
static std::weak_ptr<SapienRenderEngine> gEngine;
2624
std::shared_ptr<SapienRenderEngine> engine;
2725
if ((engine = gEngine.lock())) {
2826
return engine;
2927
}
30-
gEngine = engine = std::make_shared<SapienRenderEngine>(
31-
offscreenOnly, maxNumMaterials, maxNumTextures, defaultMipLevels, device, doNotLoadTexture);
28+
gEngine = engine = std::make_shared<SapienRenderEngine>();
3229
return engine;
3330
}
3431

@@ -47,11 +44,11 @@ std::string SapienRenderEngine::getSummary() {
4744
return ss.str();
4845
}
4946

50-
SapienRenderEngine::SapienRenderEngine(bool offscreenOnly, uint32_t maxNumMaterials,
51-
uint32_t maxNumTextures, uint32_t defaultMipLevels,
52-
std::string const &device, bool doNotLoadTexture) {
53-
mContext = svulkan2::core::Context::Create(!offscreenOnly, maxNumMaterials, maxNumTextures,
54-
defaultMipLevels, doNotLoadTexture, device);
47+
SapienRenderEngine::SapienRenderEngine() {
48+
auto &d = SapienRendererDefault::Get();
49+
mContext = svulkan2::core::Context::Create(!d.getOffscreenOnly(), d.getMaxNumMaterials(),
50+
d.getMaxNumTextures(), d.getDefaultMipMaps(),
51+
d.getDoNotLoadTexture());
5552
mResourceManager = mContext->createResourceManager();
5653
}
5754

0 commit comments

Comments
 (0)