diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a66f165..06a24eb6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -171,6 +171,7 @@ endif() add_subdirectory(src/render/noop) if(MUJOCO_USE_FILAMENT) + add_subdirectory(src/render/filament) add_subdirectory(src/experimental/filament) endif() diff --git a/src/experimental/filament/CMakeLists.txt b/src/experimental/filament/CMakeLists.txt index 7c8a6224..0db157ae 100644 --- a/src/experimental/filament/CMakeLists.txt +++ b/src/experimental/filament/CMakeLists.txt @@ -14,47 +14,13 @@ cmake_minimum_required(VERSION 3.16) -set(MUJOCO_FILAMENT_TARGET_NAME mujoco_filament) +set(MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME mujoco_filament_experimental) -add_library(${MUJOCO_FILAMENT_TARGET_NAME} STATIC) -target_compile_definitions(${MUJOCO_FILAMENT_TARGET_NAME} PRIVATE MJ_STATIC) +add_library(${MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME} STATIC) +target_compile_definitions(${MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME} PRIVATE MJ_STATIC) -target_sources(${MUJOCO_FILAMENT_TARGET_NAME} +target_sources(${MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME} PUBLIC - render_context_filament.h - render_context_filament.cc - render_context_filament_cpp.h - filament_util.h - filament_util.cc - filament/builtins.cc - filament/builtins.h - filament/color_grading_options.cc - filament/color_grading_options.h - filament/filament_context.cc - filament/filament_context.h - filament/filament_platform_factory.cc - filament/filament_platform_factory.h - filament/imgui_editor.cc - filament/light.cc - filament/light.h - filament/material_manager.cc - filament/material_manager.h - filament/mesh.cc - filament/mesh.h - filament/object_manager.cc - filament/object_manager.h - filament/outliner.cc - filament/outliner.h - filament/reflection_manager.cc - filament/reflection_manager.h - filament/render_target.cc - filament/render_target.h - filament/renderable.cc - filament/renderable.h - filament/scene_view.cc - filament/scene_view.h - filament/texture.cc - filament/texture.h compat/light_manager.cc compat/light_manager.h compat/model_objects.cc @@ -65,107 +31,20 @@ target_sources(${MUJOCO_FILAMENT_TARGET_NAME} compat/scene_geom_util.h ) if(MUJOCO_USE_FILAMENT_MJR_COMPAT) - target_sources(${MUJOCO_FILAMENT_TARGET_NAME} + target_sources(${MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME} PUBLIC mjr_compat.cc ) endif() -target_include_directories(${MUJOCO_FILAMENT_TARGET_NAME} +target_include_directories(${MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src ) -include(third_party_deps/dear_imgui) -include(third_party_deps/filament) -target_link_libraries(${MUJOCO_FILAMENT_TARGET_NAME} - dear_imgui - filament - image # provided by filament - ktxreader # provided by filament +target_link_libraries(${MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME} + mujoco_filament ) -add_library(mujoco::filament ALIAS ${MUJOCO_FILAMENT_TARGET_NAME}) - -# The "mujoco::filament" library needs access to some assets (e.g. filament -# material shaders) in order to do rendering. As such, you must also include -# the assets under MUJOCO_FILAMENT_ASSETS_DIR in your project. As part of -# the filament library configuration, you will provide a function that the -# library will use to load these assets. -set(ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets") -set(OUTPUT_ASSETS_DIR "${CMAKE_CURRENT_BINARY_DIR}/assets") -file(MAKE_DIRECTORY ${OUTPUT_ASSETS_DIR}) -file(COPY - "${ASSETS_DIR}/ibl.ktx" - DESTINATION ${OUTPUT_ASSETS_DIR} -) - -set(MATC_EXECUTABLE matc) -set(MATERIAL_FILES - pbr.mat - pbr_transparent.mat - pbr_packed.mat - pbr_packed_transparent.mat - phong_2d_fade.mat - phong_2d.mat - phong_2d_reflect.mat - phong_2d_uv_fade.mat - phong_2d_uv.mat - phong_2d_uv_reflect.mat - phong_color_fade.mat - phong_color.mat - phong_color_reflect.mat - phong_cube_fade.mat - phong_cube.mat - phong_cube_reflect.mat - outline_composite.mat - outline_flatten.mat - outline_jumpflood.mat - unlit_decor.mat - unlit_depth.mat - unlit_segmentation.mat - unlit_ui.mat -) - -foreach(MATERIAL_FILE ${MATERIAL_FILES}) - get_filename_component(MATERIAL_NAME ${MATERIAL_FILE} NAME_WE) - set(INPUT_FILE "${ASSETS_DIR}/${MATERIAL_FILE}") - set(OUTPUT_FILE "${OUTPUT_ASSETS_DIR}/${MATERIAL_NAME}.filamat") - - if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") - set(PRECOMPILED_FILE "${MUJOCO_NATIVE_BUILD_DIR}/src/experimental/filament/assets/${MATERIAL_NAME}.filamat") - add_custom_command( - OUTPUT ${OUTPUT_FILE} - COMMAND ${CMAKE_COMMAND} -E copy - ${PRECOMPILED_FILE} - ${OUTPUT_FILE} - DEPENDS ${PRECOMPILED_FILE} - COMMENT "Copying precompiled material ${MATERIAL_NAME}.filamat" - ) - else() - add_custom_command( - OUTPUT ${OUTPUT_FILE} - COMMAND ${MATC_EXECUTABLE} - --platform=all - --api=vulkan - --api=opengl - --variant-filter skinning - --optimize-size - --output ${OUTPUT_FILE} - ${INPUT_FILE} - DEPENDS ${INPUT_FILE} - DEPENDS matc - COMMENT "Compiling ${MATERIAL_FILE}" - ) - endif() - - list(APPEND MUJOCO_FILAMENT_ASSET_FILES ${OUTPUT_FILE}) -endforeach() - -list(APPEND MUJOCO_FILAMENT_ASSET_FILES "${OUTPUT_ASSETS_DIR}/ibl.ktx") - -add_custom_target(mujoco_filament_assets DEPENDS ${MUJOCO_FILAMENT_ASSET_FILES}) -add_dependencies(${MUJOCO_FILAMENT_TARGET_NAME} mujoco_filament_assets) - -set(MUJOCO_FILAMENT_ASSETS_DIR ${OUTPUT_ASSETS_DIR}) +add_library(mujoco::filament_experimental ALIAS ${MUJOCO_FILAMENT_EXPERIMENTAL_TARGET_NAME}) diff --git a/src/experimental/filament/compat/light_manager.cc b/src/experimental/filament/compat/light_manager.cc index 9c2d7f97..6ed58539 100644 --- a/src/experimental/filament/compat/light_manager.cc +++ b/src/experimental/filament/compat/light_manager.cc @@ -24,9 +24,9 @@ #include #include #include "experimental/filament/compat/model_objects.h" -#include "experimental/filament/filament_util.h" -#include "experimental/filament/render_context_filament_cpp.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/support/filament_util.h" namespace mujoco { diff --git a/src/experimental/filament/compat/light_manager.h b/src/experimental/filament/compat/light_manager.h index 3a68d346..37e830fa 100644 --- a/src/experimental/filament/compat/light_manager.h +++ b/src/experimental/filament/compat/light_manager.h @@ -18,8 +18,8 @@ #include #include "experimental/filament/compat/model_objects.h" -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco { diff --git a/src/experimental/filament/compat/model_objects.cc b/src/experimental/filament/compat/model_objects.cc index fa04d0c6..bbcaea39 100644 --- a/src/experimental/filament/compat/model_objects.cc +++ b/src/experimental/filament/compat/model_objects.cc @@ -29,9 +29,9 @@ #include #include #include -#include "experimental/filament/filament_util.h" -#include "experimental/filament/render_context_filament_cpp.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" +#include "render/filament/support/filament_util.h" namespace mujoco { diff --git a/src/experimental/filament/compat/model_objects.h b/src/experimental/filament/compat/model_objects.h index 78122797..f88f1ed5 100644 --- a/src/experimental/filament/compat/model_objects.h +++ b/src/experimental/filament/compat/model_objects.h @@ -19,8 +19,8 @@ #include #include -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco { diff --git a/src/experimental/filament/compat/scene_bridge.cc b/src/experimental/filament/compat/scene_bridge.cc index 0af576b8..07295651 100644 --- a/src/experimental/filament/compat/scene_bridge.cc +++ b/src/experimental/filament/compat/scene_bridge.cc @@ -19,18 +19,18 @@ #include #include +#include #include #include -#include #include #include #include #include "experimental/filament/compat/light_manager.h" #include "experimental/filament/compat/model_objects.h" #include "experimental/filament/compat/scene_geom_util.h" -#include "experimental/filament/filament_util.h" -#include "experimental/filament/render_context_filament_cpp.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" +#include "render/filament/support/filament_util.h" namespace mujoco { diff --git a/src/experimental/filament/compat/scene_bridge.h b/src/experimental/filament/compat/scene_bridge.h index 29e2fd1d..43d0c651 100644 --- a/src/experimental/filament/compat/scene_bridge.h +++ b/src/experimental/filament/compat/scene_bridge.h @@ -26,8 +26,8 @@ #include #include "experimental/filament/compat/light_manager.h" #include "experimental/filament/compat/model_objects.h" -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco { diff --git a/src/experimental/filament/compat/scene_geom_util.cc b/src/experimental/filament/compat/scene_geom_util.cc index b9e17703..46e35161 100644 --- a/src/experimental/filament/compat/scene_geom_util.cc +++ b/src/experimental/filament/compat/scene_geom_util.cc @@ -22,8 +22,8 @@ #include #include #include "experimental/filament/compat/model_objects.h" -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco { diff --git a/src/experimental/filament/compat/scene_geom_util.h b/src/experimental/filament/compat/scene_geom_util.h index 95404d11..6bd10e39 100644 --- a/src/experimental/filament/compat/scene_geom_util.h +++ b/src/experimental/filament/compat/scene_geom_util.h @@ -18,8 +18,8 @@ #include #include #include "experimental/filament/compat/model_objects.h" -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco { diff --git a/src/experimental/filament/mjr_compat.cc b/src/experimental/filament/mjr_compat.cc index f8fdda6a..687ea003 100644 --- a/src/experimental/filament/mjr_compat.cc +++ b/src/experimental/filament/mjr_compat.cc @@ -18,8 +18,8 @@ #include #include "experimental/filament/compat/scene_bridge.h" -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" // This library implements the entirety of mujoco's mjr API. You can link this // library with your application (instead of the "classic" mujoco renderer) to diff --git a/src/experimental/platform/CMakeLists.txt b/src/experimental/platform/CMakeLists.txt index 6df6cf4f..c903d604 100644 --- a/src/experimental/platform/CMakeLists.txt +++ b/src/experimental/platform/CMakeLists.txt @@ -104,6 +104,7 @@ target_link_libraries(${MUJOCO_PLATFORM_TARGET_NAME} dear_imgui_stdlib implot mujoco::filament + mujoco::filament_experimental webp SDL2::SDL2-static ${MUJOCO_PLATFORM_RENDER_DEPS} diff --git a/src/experimental/platform/hal/renderer.cc b/src/experimental/platform/hal/renderer.cc index 6ebab06a..4343945f 100644 --- a/src/experimental/platform/hal/renderer.cc +++ b/src/experimental/platform/hal/renderer.cc @@ -28,12 +28,12 @@ #include "experimental/platform/hal/egl_utils.h" #endif #include "experimental/filament/compat/scene_bridge.h" -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" #include "experimental/platform/hal/graphics_mode.h" #include "experimental/platform/ux/imgui_bridge.h" #include "experimental/platform/ux/imgui_widgets.h" #include "experimental/platform/ux/plugin.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco::platform { diff --git a/src/experimental/platform/hal/renderer.h b/src/experimental/platform/hal/renderer.h index e14a8de3..5c2176ca 100644 --- a/src/experimental/platform/hal/renderer.h +++ b/src/experimental/platform/hal/renderer.h @@ -23,10 +23,10 @@ #include #include "experimental/filament/compat/scene_bridge.h" -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" #include "experimental/platform/hal/graphics_mode.h" #include "experimental/platform/ux/imgui_bridge.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco::platform { diff --git a/src/experimental/platform/ux/imgui_bridge.cc b/src/experimental/platform/ux/imgui_bridge.cc index 60af6457..3e254546 100644 --- a/src/experimental/platform/ux/imgui_bridge.cc +++ b/src/experimental/platform/ux/imgui_bridge.cc @@ -25,8 +25,8 @@ #include #include #include -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco { diff --git a/src/experimental/platform/ux/imgui_bridge.h b/src/experimental/platform/ux/imgui_bridge.h index e61a09cb..cc1390da 100644 --- a/src/experimental/platform/ux/imgui_bridge.h +++ b/src/experimental/platform/ux/imgui_bridge.h @@ -20,8 +20,8 @@ #include #include -#include "experimental/filament/render_context_filament.h" -#include "experimental/filament/render_context_filament_cpp.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/mjrfilament_cpp.h" namespace mujoco { diff --git a/src/experimental/studio/CMakeLists.txt b/src/experimental/studio/CMakeLists.txt index 592f18ce..ef638a2e 100644 --- a/src/experimental/studio/CMakeLists.txt +++ b/src/experimental/studio/CMakeLists.txt @@ -82,7 +82,7 @@ function(configure_studio_target TARGET_NAME) POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../src/experimental/filament/assets + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../src/render/filament/assets ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/assets COMMENT "Copying Filament assets to build directory" ) diff --git a/src/render/filament/CMakeLists.txt b/src/render/filament/CMakeLists.txt new file mode 100644 index 00000000..dff9cf18 --- /dev/null +++ b/src/render/filament/CMakeLists.txt @@ -0,0 +1,157 @@ +# Copyright 2025 DeepMind Technologies Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +cmake_minimum_required(VERSION 3.16) + +set(MUJOCO_FILAMENT_TARGET_NAME mujoco_filament) + +add_library(${MUJOCO_FILAMENT_TARGET_NAME} STATIC) +target_compile_definitions(${MUJOCO_FILAMENT_TARGET_NAME} PRIVATE MJ_STATIC) + +target_sources(${MUJOCO_FILAMENT_TARGET_NAME} + PUBLIC + mjrfilament.h + mjrfilament.cc + mjrfilament_cpp.h + core/builtins.cc + core/builtins.h + core/color_grading_options.cc + core/color_grading_options.h + core/filament_context.cc + core/filament_context.h + core/filament_platform_factory.cc + core/filament_platform_factory.h + core/imgui_editor.cc + core/light.cc + core/light.h + core/material_manager.cc + core/material_manager.h + core/mesh.cc + core/mesh.h + core/object_manager.cc + core/object_manager.h + core/outliner.cc + core/outliner.h + core/reflection_manager.cc + core/reflection_manager.h + core/render_target.cc + core/render_target.h + core/renderable.cc + core/renderable.h + core/scene_view.cc + core/scene_view.h + core/texture.cc + core/texture.h + support/filament_util.h + support/filament_util.cc +) + +target_include_directories(${MUJOCO_FILAMENT_TARGET_NAME} + PUBLIC + ${PROJECT_SOURCE_DIR}/include + ${PROJECT_SOURCE_DIR}/src +) + +include(third_party_deps/dear_imgui) +include(third_party_deps/filament) +target_link_libraries(${MUJOCO_FILAMENT_TARGET_NAME} + dear_imgui + filament + image # provided by filament + ktxreader # provided by filament +) + +add_library(mujoco::filament ALIAS ${MUJOCO_FILAMENT_TARGET_NAME}) + +# The "mujoco::filament" library needs access to some assets (e.g. filament +# material shaders) in order to do rendering. As such, you must also include +# the assets under MUJOCO_FILAMENT_ASSETS_DIR in your project. As part of +# the filament library configuration, you will provide a function that the +# library will use to load these assets. +set(ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets") +set(OUTPUT_ASSETS_DIR "${CMAKE_CURRENT_BINARY_DIR}/assets") +file(MAKE_DIRECTORY ${OUTPUT_ASSETS_DIR}) +file(COPY + "${ASSETS_DIR}/ibl.ktx" + DESTINATION ${OUTPUT_ASSETS_DIR} +) + +set(MATC_EXECUTABLE matc) +set(MATERIAL_FILES + pbr.mat + pbr_transparent.mat + pbr_packed.mat + pbr_packed_transparent.mat + phong_2d_fade.mat + phong_2d.mat + phong_2d_reflect.mat + phong_2d_uv_fade.mat + phong_2d_uv.mat + phong_2d_uv_reflect.mat + phong_color_fade.mat + phong_color.mat + phong_color_reflect.mat + phong_cube_fade.mat + phong_cube.mat + phong_cube_reflect.mat + outline_composite.mat + outline_flatten.mat + outline_jumpflood.mat + unlit_decor.mat + unlit_depth.mat + unlit_segmentation.mat + unlit_ui.mat +) + +foreach(MATERIAL_FILE ${MATERIAL_FILES}) + get_filename_component(MATERIAL_NAME ${MATERIAL_FILE} NAME_WE) + set(INPUT_FILE "${ASSETS_DIR}/${MATERIAL_FILE}") + set(OUTPUT_FILE "${OUTPUT_ASSETS_DIR}/${MATERIAL_NAME}.filamat") + + if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + set(PRECOMPILED_FILE "${MUJOCO_NATIVE_BUILD_DIR}/src/render/filament/assets/${MATERIAL_NAME}.filamat") + add_custom_command( + OUTPUT ${OUTPUT_FILE} + COMMAND ${CMAKE_COMMAND} -E copy + ${PRECOMPILED_FILE} + ${OUTPUT_FILE} + DEPENDS ${PRECOMPILED_FILE} + COMMENT "Copying precompiled material ${MATERIAL_NAME}.filamat" + ) + else() + add_custom_command( + OUTPUT ${OUTPUT_FILE} + COMMAND ${MATC_EXECUTABLE} + --platform=all + --api=vulkan + --api=opengl + --variant-filter skinning + --optimize-size + --output ${OUTPUT_FILE} + ${INPUT_FILE} + DEPENDS ${INPUT_FILE} + DEPENDS matc + COMMENT "Compiling ${MATERIAL_FILE}" + ) + endif() + + list(APPEND MUJOCO_FILAMENT_ASSET_FILES ${OUTPUT_FILE}) +endforeach() + +list(APPEND MUJOCO_FILAMENT_ASSET_FILES "${OUTPUT_ASSETS_DIR}/ibl.ktx") + +add_custom_target(mujoco_filament_assets DEPENDS ${MUJOCO_FILAMENT_ASSET_FILES}) +add_dependencies(${MUJOCO_FILAMENT_TARGET_NAME} mujoco_filament_assets) + +set(MUJOCO_FILAMENT_ASSETS_DIR ${OUTPUT_ASSETS_DIR}) diff --git a/src/experimental/filament/assets/ibl.ktx b/src/render/filament/assets/ibl.ktx similarity index 100% rename from src/experimental/filament/assets/ibl.ktx rename to src/render/filament/assets/ibl.ktx diff --git a/src/experimental/filament/assets/outline_composite.mat b/src/render/filament/assets/outline_composite.mat similarity index 100% rename from src/experimental/filament/assets/outline_composite.mat rename to src/render/filament/assets/outline_composite.mat diff --git a/src/experimental/filament/assets/outline_flatten.mat b/src/render/filament/assets/outline_flatten.mat similarity index 100% rename from src/experimental/filament/assets/outline_flatten.mat rename to src/render/filament/assets/outline_flatten.mat diff --git a/src/experimental/filament/assets/outline_jumpflood.mat b/src/render/filament/assets/outline_jumpflood.mat similarity index 100% rename from src/experimental/filament/assets/outline_jumpflood.mat rename to src/render/filament/assets/outline_jumpflood.mat diff --git a/src/experimental/filament/assets/pbr.mat b/src/render/filament/assets/pbr.mat similarity index 100% rename from src/experimental/filament/assets/pbr.mat rename to src/render/filament/assets/pbr.mat diff --git a/src/experimental/filament/assets/pbr_packed.mat b/src/render/filament/assets/pbr_packed.mat similarity index 100% rename from src/experimental/filament/assets/pbr_packed.mat rename to src/render/filament/assets/pbr_packed.mat diff --git a/src/experimental/filament/assets/pbr_packed_transparent.mat b/src/render/filament/assets/pbr_packed_transparent.mat similarity index 100% rename from src/experimental/filament/assets/pbr_packed_transparent.mat rename to src/render/filament/assets/pbr_packed_transparent.mat diff --git a/src/experimental/filament/assets/pbr_transparent.mat b/src/render/filament/assets/pbr_transparent.mat similarity index 100% rename from src/experimental/filament/assets/pbr_transparent.mat rename to src/render/filament/assets/pbr_transparent.mat diff --git a/src/experimental/filament/assets/phong_2d.mat b/src/render/filament/assets/phong_2d.mat similarity index 100% rename from src/experimental/filament/assets/phong_2d.mat rename to src/render/filament/assets/phong_2d.mat diff --git a/src/experimental/filament/assets/phong_2d_fade.mat b/src/render/filament/assets/phong_2d_fade.mat similarity index 100% rename from src/experimental/filament/assets/phong_2d_fade.mat rename to src/render/filament/assets/phong_2d_fade.mat diff --git a/src/experimental/filament/assets/phong_2d_reflect.mat b/src/render/filament/assets/phong_2d_reflect.mat similarity index 100% rename from src/experimental/filament/assets/phong_2d_reflect.mat rename to src/render/filament/assets/phong_2d_reflect.mat diff --git a/src/experimental/filament/assets/phong_2d_uv.mat b/src/render/filament/assets/phong_2d_uv.mat similarity index 100% rename from src/experimental/filament/assets/phong_2d_uv.mat rename to src/render/filament/assets/phong_2d_uv.mat diff --git a/src/experimental/filament/assets/phong_2d_uv_fade.mat b/src/render/filament/assets/phong_2d_uv_fade.mat similarity index 100% rename from src/experimental/filament/assets/phong_2d_uv_fade.mat rename to src/render/filament/assets/phong_2d_uv_fade.mat diff --git a/src/experimental/filament/assets/phong_2d_uv_reflect.mat b/src/render/filament/assets/phong_2d_uv_reflect.mat similarity index 100% rename from src/experimental/filament/assets/phong_2d_uv_reflect.mat rename to src/render/filament/assets/phong_2d_uv_reflect.mat diff --git a/src/experimental/filament/assets/phong_color.mat b/src/render/filament/assets/phong_color.mat similarity index 100% rename from src/experimental/filament/assets/phong_color.mat rename to src/render/filament/assets/phong_color.mat diff --git a/src/experimental/filament/assets/phong_color_fade.mat b/src/render/filament/assets/phong_color_fade.mat similarity index 100% rename from src/experimental/filament/assets/phong_color_fade.mat rename to src/render/filament/assets/phong_color_fade.mat diff --git a/src/experimental/filament/assets/phong_color_reflect.mat b/src/render/filament/assets/phong_color_reflect.mat similarity index 100% rename from src/experimental/filament/assets/phong_color_reflect.mat rename to src/render/filament/assets/phong_color_reflect.mat diff --git a/src/experimental/filament/assets/phong_cube.mat b/src/render/filament/assets/phong_cube.mat similarity index 100% rename from src/experimental/filament/assets/phong_cube.mat rename to src/render/filament/assets/phong_cube.mat diff --git a/src/experimental/filament/assets/phong_cube_fade.mat b/src/render/filament/assets/phong_cube_fade.mat similarity index 100% rename from src/experimental/filament/assets/phong_cube_fade.mat rename to src/render/filament/assets/phong_cube_fade.mat diff --git a/src/experimental/filament/assets/phong_cube_reflect.mat b/src/render/filament/assets/phong_cube_reflect.mat similarity index 100% rename from src/experimental/filament/assets/phong_cube_reflect.mat rename to src/render/filament/assets/phong_cube_reflect.mat diff --git a/src/experimental/filament/assets/unlit_decor.mat b/src/render/filament/assets/unlit_decor.mat similarity index 100% rename from src/experimental/filament/assets/unlit_decor.mat rename to src/render/filament/assets/unlit_decor.mat diff --git a/src/experimental/filament/assets/unlit_depth.mat b/src/render/filament/assets/unlit_depth.mat similarity index 100% rename from src/experimental/filament/assets/unlit_depth.mat rename to src/render/filament/assets/unlit_depth.mat diff --git a/src/experimental/filament/assets/unlit_segmentation.mat b/src/render/filament/assets/unlit_segmentation.mat similarity index 100% rename from src/experimental/filament/assets/unlit_segmentation.mat rename to src/render/filament/assets/unlit_segmentation.mat diff --git a/src/experimental/filament/assets/unlit_ui.mat b/src/render/filament/assets/unlit_ui.mat similarity index 100% rename from src/experimental/filament/assets/unlit_ui.mat rename to src/render/filament/assets/unlit_ui.mat diff --git a/src/experimental/filament/filament/builtins.cc b/src/render/filament/core/builtins.cc similarity index 97% rename from src/experimental/filament/filament/builtins.cc rename to src/render/filament/core/builtins.cc index 95424920..b0e2d42c 100644 --- a/src/experimental/filament/filament/builtins.cc +++ b/src/render/filament/core/builtins.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/builtins.h" +#include "render/filament/core/builtins.h" #include #include @@ -26,9 +26,9 @@ #include #include #include -#include "experimental/filament/filament_util.h" -#include "experimental/filament/filament/mesh.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/mesh.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/support/filament_util.h" namespace mujoco { @@ -169,7 +169,7 @@ class TriangleBuilder : public BuiltinBuilder { positions_.emplace_back(1, 0, 0); positions_.emplace_back(0, 1, 0); - orientations_.resize(positions_.size(), CalculateOrientation({0, 0, 1})); + orientations_.resize(positions_.size(), CalculateOrientation({0, 0, 1})); indices_.reserve(3); indices_.emplace_back(0); @@ -187,13 +187,13 @@ class LineBoxBuilder : public BuiltinBuilder { positions_.reserve(8); positions_.emplace_back(-1.0f, -1.0f, -1.0f); - positions_.emplace_back( 1.0f, -1.0f, -1.0f); - positions_.emplace_back(-1.0f, 1.0f, -1.0f); - positions_.emplace_back( 1.0f, 1.0f, -1.0f); - positions_.emplace_back(-1.0f, -1.0f, 1.0f); - positions_.emplace_back( 1.0f, -1.0f, 1.0f); - positions_.emplace_back(-1.0f, 1.0f, 1.0f); - positions_.emplace_back( 1.0f, 1.0f, 1.0f); + positions_.emplace_back(1.0f, -1.0f, -1.0f); + positions_.emplace_back(-1.0f, 1.0f, -1.0f); + positions_.emplace_back(1.0f, 1.0f, -1.0f); + positions_.emplace_back(-1.0f, -1.0f, 1.0f); + positions_.emplace_back(1.0f, -1.0f, 1.0f); + positions_.emplace_back(-1.0f, 1.0f, 1.0f); + positions_.emplace_back(1.0f, 1.0f, 1.0f); orientations_.resize(positions_.size(), {0, 0, 0, 1}); @@ -622,7 +622,8 @@ class DomeBuilder : public BuiltinBuilder { } }; -Builtins::Builtins(filament::Engine* engine, int nstack, int nslice, int nquad) { +Builtins::Builtins(filament::Engine* engine, int nstack, int nslice, + int nquad) { line_ = BuiltinBuilder::Create(engine); plane_ = BuiltinBuilder::Create(engine, nquad); triangle_ = BuiltinBuilder::Create(engine); diff --git a/src/experimental/filament/filament/builtins.h b/src/render/filament/core/builtins.h similarity index 86% rename from src/experimental/filament/filament/builtins.h rename to src/render/filament/core/builtins.h index c5746e64..3024dd1f 100644 --- a/src/experimental/filament/filament/builtins.h +++ b/src/render/filament/core/builtins.h @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_BUILTINS_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_BUILTINS_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_BUILTINS_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_BUILTINS_H_ #include #include -#include "experimental/filament/filament/mesh.h" +#include "render/filament/core/mesh.h" namespace mujoco { @@ -54,4 +54,4 @@ class Builtins { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_BUILTINS_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_BUILTINS_H_ diff --git a/src/experimental/filament/filament/color_grading_options.cc b/src/render/filament/core/color_grading_options.cc similarity index 95% rename from src/experimental/filament/filament/color_grading_options.cc rename to src/render/filament/core/color_grading_options.cc index 7c2c2220..d1906728 100644 --- a/src/experimental/filament/filament/color_grading_options.cc +++ b/src/render/filament/core/color_grading_options.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/color_grading_options.h" +#include "render/filament/core/color_grading_options.h" #include diff --git a/src/experimental/filament/filament/color_grading_options.h b/src/render/filament/core/color_grading_options.h similarity index 92% rename from src/experimental/filament/filament/color_grading_options.h rename to src/render/filament/core/color_grading_options.h index bf213120..72ac2927 100644 --- a/src/experimental/filament/filament/color_grading_options.h +++ b/src/render/filament/core/color_grading_options.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_COLOR_GRADING_OPTIONS_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_COLOR_GRADING_OPTIONS_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_COLOR_GRADING_OPTIONS_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_COLOR_GRADING_OPTIONS_H_ #include #include @@ -78,4 +78,4 @@ struct ColorGradingOptions { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_COLOR_GRADING_OPTIONS_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_COLOR_GRADING_OPTIONS_H_ diff --git a/src/experimental/filament/filament/filament_context.cc b/src/render/filament/core/filament_context.cc similarity index 94% rename from src/experimental/filament/filament/filament_context.cc rename to src/render/filament/core/filament_context.cc index 4c1516e4..27008de5 100644 --- a/src/experimental/filament/filament/filament_context.cc +++ b/src/render/filament/core/filament_context.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/filament_context.h" +#include "render/filament/core/filament_context.h" #include #include @@ -37,12 +37,12 @@ #include #include #include -#include "experimental/filament/filament/filament_platform_factory.h" -#include "experimental/filament/filament/material_manager.h" -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/filament/render_target.h" -#include "experimental/filament/filament/scene_view.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/filament_platform_factory.h" +#include "render/filament/core/material_manager.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/core/render_target.h" +#include "render/filament/core/scene_view.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -96,7 +96,8 @@ mjrfFrameHandle FilamentContext::Render( material_manager_->BeginFrame(); - std::unordered_map> scene_to_requests; + std::unordered_map> + scene_to_requests; for (const mjrfRenderRequest& request : requests) { scene_to_requests[request.scene].push_back(&request); } @@ -131,7 +132,8 @@ mjrfFrameHandle FilamentContext::Render( } else { if (read_requests.empty()) { mju_error( - "Rendering to a render target without a read request is pointless."); + "Rendering to a render target without a read request is " + "pointless."); } const mjrfReadPixelsRequest& read_request = read_requests[0]; diff --git a/src/experimental/filament/filament/filament_context.h b/src/render/filament/core/filament_context.h similarity index 86% rename from src/experimental/filament/filament/filament_context.h rename to src/render/filament/core/filament_context.h index 29df0275..462da79e 100644 --- a/src/experimental/filament/filament/filament_context.h +++ b/src/render/filament/core/filament_context.h @@ -12,21 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_FILAMENT_CONTEXT_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_FILAMENT_CONTEXT_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_FILAMENT_CONTEXT_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_FILAMENT_CONTEXT_H_ #include -#include #include +#include #include #include #include #include #include -#include "experimental/filament/filament/material_manager.h" -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/material_manager.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -61,7 +61,9 @@ class FilamentContext : public mjrfContext { ObjectManager* GetObjectManager() const { return object_manager_.get(); } - MaterialManager* GetMaterialManager() const { return material_manager_.get(); } + MaterialManager* GetMaterialManager() const { + return material_manager_.get(); + } static FilamentContext* downcast(mjrfContext* context) { return static_cast(context); @@ -90,4 +92,4 @@ class FilamentContext : public mjrfContext { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_FILAMENT_CONTEXT_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_FILAMENT_CONTEXT_H_ diff --git a/src/experimental/filament/filament/filament_platform_factory.cc b/src/render/filament/core/filament_platform_factory.cc similarity index 92% rename from src/experimental/filament/filament/filament_platform_factory.cc rename to src/render/filament/core/filament_platform_factory.cc index a7dc9709..3d7e9dd3 100644 --- a/src/experimental/filament/filament/filament_platform_factory.cc +++ b/src/render/filament/core/filament_platform_factory.cc @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/filament_platform_factory.h" +#include "render/filament/core/filament_platform_factory.h" #include #include #include #include -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" namespace mujoco { diff --git a/src/experimental/filament/filament/filament_platform_factory.h b/src/render/filament/core/filament_platform_factory.h similarity index 83% rename from src/experimental/filament/filament/filament_platform_factory.h rename to src/render/filament/core/filament_platform_factory.h index d2a11a60..4395151b 100644 --- a/src/experimental/filament/filament/filament_platform_factory.h +++ b/src/render/filament/core/filament_platform_factory.h @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_FILAMENT_PLATFORM_FACTORY_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_FILAMENT_PLATFORM_FACTORY_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_FILAMENT_PLATFORM_FACTORY_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_FILAMENT_PLATFORM_FACTORY_H_ #include -#include "experimental/filament/render_context_filament.h" #include #include +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -42,4 +42,4 @@ FilamentPlatformSetup CreateFilamentPlatform(const mjrFilamentConfig& config); } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_FILAMENT_PLATFORM_FACTORY_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_FILAMENT_PLATFORM_FACTORY_H_ diff --git a/src/experimental/filament/filament/imgui_editor.cc b/src/render/filament/core/imgui_editor.cc similarity index 98% rename from src/experimental/filament/filament/imgui_editor.cc rename to src/render/filament/core/imgui_editor.cc index 73c3a055..607eecc6 100644 --- a/src/experimental/filament/filament/imgui_editor.cc +++ b/src/render/filament/core/imgui_editor.cc @@ -12,7 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. - #include #include #include @@ -33,9 +32,9 @@ #include #include #include -#include "experimental/filament/filament/color_grading_options.h" -#include "experimental/filament/filament/scene_view.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/color_grading_options.h" +#include "render/filament/core/scene_view.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -243,8 +242,8 @@ void DrawAmbientOcclusionGui(SceneView* scene_view) { opts.power = std::max(opts.power, 0.0f); opts.radius = std::clamp(opts.radius, 0.0f, 10.0f); opts.bias = std::clamp(opts.bias, 0.0f, 0.001f); - opts.ssct.lightConeRad = std::clamp(opts.ssct.lightConeRad, 0.0f, - filament::math::f::PI / 2.0f); + opts.ssct.lightConeRad = + std::clamp(opts.ssct.lightConeRad, 0.0f, filament::math::f::PI / 2.0f); view->setAmbientOcclusionOptions(opts); } @@ -417,10 +416,9 @@ void DrawColorGradingGui(SceneView* scene_view) { {.step = 0.01f, .fstep = 0.1f}); changed |= Ui("Contrast", &opts.contrast, {.step = 0.01f, .fstep = 0.1f}); changed |= Ui("Vibrance", &opts.vibrance, {.step = 0.01f, .fstep = 0.1f}); - changed |= Ui("Saturation", &opts.saturation, - {.step = 0.01f, .fstep = 0.1f}); - changed |= Ui("Temperature", &opts.temperature, - {.step = 0.01f, .fstep = 0.1f}); + changed |= Ui("Saturation", &opts.saturation, {.step = 0.01f, .fstep = 0.1f}); + changed |= + Ui("Temperature", &opts.temperature, {.step = 0.01f, .fstep = 0.1f}); changed |= Ui("Tint", &opts.tint, {.step = 0.01f, .fstep = 0.1f}); changed |= Ui("Out Red", &opts.out_red); changed |= Ui("Out Green", &opts.out_green); diff --git a/src/experimental/filament/filament/light.cc b/src/render/filament/core/light.cc similarity index 96% rename from src/experimental/filament/filament/light.cc rename to src/render/filament/core/light.cc index 2ad3d12d..f1d0743f 100644 --- a/src/experimental/filament/filament/light.cc +++ b/src/render/filament/core/light.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/light.h" +#include "render/filament/core/light.h" #include @@ -25,9 +25,9 @@ #include #include #include -#include "experimental/filament/filament_util.h" -#include "experimental/filament/filament/texture.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/texture.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/support/filament_util.h" namespace mujoco { diff --git a/src/experimental/filament/filament/light.h b/src/render/filament/core/light.h similarity index 89% rename from src/experimental/filament/filament/light.h rename to src/render/filament/core/light.h index 546cc1d0..67fb5db6 100644 --- a/src/experimental/filament/filament/light.h +++ b/src/render/filament/core/light.h @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_LIGHT_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_LIGHT_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_LIGHT_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_LIGHT_H_ #include #include #include #include #include -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -74,4 +74,4 @@ class Light : public mjrfLight { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_LIGHT_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_LIGHT_H_ diff --git a/src/experimental/filament/filament/material_manager.cc b/src/render/filament/core/material_manager.cc similarity index 94% rename from src/experimental/filament/filament/material_manager.cc rename to src/render/filament/core/material_manager.cc index a1a83b6a..73545b40 100644 --- a/src/experimental/filament/filament/material_manager.cc +++ b/src/render/filament/core/material_manager.cc @@ -12,7 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/material_manager.h" +#include "render/filament/core/material_manager.h" + #include #include #include @@ -24,11 +25,11 @@ #include #include #include -#include "experimental/filament/filament_util.h" -#include "experimental/filament/filament/mesh.h" -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/filament/texture.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/mesh.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/core/texture.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/support/filament_util.h" namespace mujoco { @@ -76,9 +77,7 @@ MaterialManager::~MaterialManager() { } } -void MaterialManager::BeginFrame() { - used_keys_.clear(); -} +void MaterialManager::BeginFrame() { used_keys_.clear(); } void MaterialManager::EndFrame() { if (instances_.size() == used_keys_.size()) { @@ -229,8 +228,8 @@ filament::MaterialInstance* MaterialManager::GetInstance(MaterialKey key) { return it->second; } -void MaterialManager::UpdateMaterialInstance(filament::MaterialInstance* instance, - const mjrfMaterial& material) { +void MaterialManager::UpdateMaterialInstance( + filament::MaterialInstance* instance, const mjrfMaterial& material) { if (material.scissor[2] != 0 && material.scissor[3] != 0) { instance->setScissor(material.scissor[0], material.scissor[1], material.scissor[2], material.scissor[3]); @@ -311,9 +310,7 @@ void MaterialManager::UpdateMaterialInstance(filament::MaterialInstance* instanc TrySetTexture("Reflection", material.reflection_texture, mjTEXROLE_USER); } -ObjectManager* MaterialManager::GetObjectManager() const { - return object_mgr_; -} +ObjectManager* MaterialManager::GetObjectManager() const { return object_mgr_; } filament::Engine* MaterialManager::GetEngine() const { return object_mgr_->GetEngine(); diff --git a/src/experimental/filament/filament/material_manager.h b/src/render/filament/core/material_manager.h similarity index 89% rename from src/experimental/filament/filament/material_manager.h rename to src/render/filament/core/material_manager.h index ad18d8b8..e935dac8 100644 --- a/src/experimental/filament/filament/material_manager.h +++ b/src/render/filament/core/material_manager.h @@ -12,18 +12,19 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_MATERIAL_MANAGER_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_MATERIAL_MANAGER_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_MATERIAL_MANAGER_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_MATERIAL_MANAGER_H_ #include #include #include + #include #include #include -#include "experimental/filament/filament/mesh.h" -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/mesh.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -85,4 +86,4 @@ class MaterialManager { }; } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_MATERIAL_MANAGER_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_MATERIAL_MANAGER_H_ diff --git a/src/experimental/filament/filament/mesh.cc b/src/render/filament/core/mesh.cc similarity index 93% rename from src/experimental/filament/filament/mesh.cc rename to src/render/filament/core/mesh.cc index 35f8fe6e..93c68170 100644 --- a/src/experimental/filament/filament/mesh.cc +++ b/src/render/filament/core/mesh.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/mesh.h" +#include "render/filament/core/mesh.h" #include #include @@ -23,17 +23,17 @@ #include #include +#include #include #include #include #include -#include #include #include #include #include -#include "experimental/filament/filament_util.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/support/filament_util.h" namespace mujoco { @@ -111,9 +111,7 @@ Mesh::Mesh(filament::Engine* engine, const mjrfMeshData& data) // If the user has provided a release callback, then we need to ensure we // call is when filament is done with the mesh data. if (data.release) { - shared_state_->callbacks.push_back([=]() { - data.release(data.user_data); - }); + shared_state_->callbacks.push_back([=]() { data.release(data.user_data); }); } BuildVertexBuffer(data); @@ -215,7 +213,8 @@ void Mesh::BuildVertexBuffer(const mjrfMeshData& data) { } vertex_buffer_ = vb_builder.build(*engine_); auto* user_data = new std::shared_ptr(shared_state_); - vertex_buffer_->setBufferAt(*engine_, 0, {bytes, nbytes, callback, user_data}); + vertex_buffer_->setBufferAt(*engine_, 0, + {bytes, nbytes, callback, user_data}); } else { // For a non-interleaved vertex buffer, we assign a separate buffer to each // attribute. @@ -248,7 +247,8 @@ void Mesh::BuildVertexBuffer(const mjrfMeshData& data) { bytes = BuildOrientationsFromNormals(data.nvertices, attrib); } auto* user_data = new std::shared_ptr(shared_state_); - vertex_buffer_->setBufferAt(*engine_, i, {bytes, nbytes, callback, user_data}); + vertex_buffer_->setBufferAt(*engine_, i, + {bytes, nbytes, callback, user_data}); } } } @@ -258,9 +258,8 @@ void Mesh::BuildIndexBuffer(const mjrfMeshData& data) { return; } - const int element_size = data.index_type == mjINDEX_TYPE_U16 - ? sizeof(uint16_t) - : sizeof(uint32_t); + const int element_size = + data.index_type == mjINDEX_TYPE_U16 ? sizeof(uint16_t) : sizeof(uint32_t); const int num_bytes = data.nindices * element_size; // If indices == 0 and nindices > 0, then the user is specifying that the @@ -269,9 +268,7 @@ void Mesh::BuildIndexBuffer(const mjrfMeshData& data) { const void* indices = data.indices; if (indices == nullptr) { std::byte* sequence = new std::byte[num_bytes]; - shared_state_->callbacks.push_back([=]() { - delete[] sequence; - }); + shared_state_->callbacks.push_back([=]() { delete[] sequence; }); if (data.index_type == mjINDEX_TYPE_U16) { FillSequence(sequence, num_bytes); @@ -296,9 +293,7 @@ void Mesh::BuildIndexBuffer(const mjrfMeshData& data) { float4* Mesh::BuildOrientationsFromNormals(int nvertices, const mjrVertexAttribute& normals) { float4* orientations = new float4[nvertices]; - shared_state_->callbacks.push_back([=]() { - delete[] orientations; - }); + shared_state_->callbacks.push_back([=]() { delete[] orientations; }); const float* normals_ptr = reinterpret_cast(normals.bytes); for (int i = 0; i < nvertices; ++i) { orientations[i] = CalculateOrientation(ReadFloat3(normals_ptr, i)); @@ -359,11 +354,7 @@ bool Mesh::HasVertexAttribute(mjrVertexAttributeUsage attrib) const { return it != attributes_.end(); } -bool Mesh::HasBounds() const { - return bounds_.has_value(); -} +bool Mesh::HasBounds() const { return bounds_.has_value(); } -filament::Box Mesh::GetBounds() const { - return bounds_.value(); -} +filament::Box Mesh::GetBounds() const { return bounds_.value(); } } // namespace mujoco diff --git a/src/experimental/filament/filament/mesh.h b/src/render/filament/core/mesh.h similarity index 89% rename from src/experimental/filament/filament/mesh.h rename to src/render/filament/core/mesh.h index 74595992..0acec902 100644 --- a/src/experimental/filament/filament/mesh.h +++ b/src/render/filament/core/mesh.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_MESH_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_MESH_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_MESH_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_MESH_H_ #include #include @@ -28,7 +28,7 @@ #include #include #include -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -60,9 +60,7 @@ class Mesh : public mjrfMesh { // Returns the bounds of the mesh. filament::Box GetBounds() const; - static Mesh* downcast(mjrfMesh* mesh) { - return static_cast(mesh); - } + static Mesh* downcast(mjrfMesh* mesh) { return static_cast(mesh); } static const Mesh* downcast(const mjrfMesh* mesh) { return static_cast(mesh); } @@ -95,4 +93,4 @@ class Mesh : public mjrfMesh { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_MESH_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_MESH_H_ diff --git a/src/experimental/filament/filament/object_manager.cc b/src/render/filament/core/object_manager.cc similarity index 85% rename from src/experimental/filament/filament/object_manager.cc rename to src/render/filament/core/object_manager.cc index 2f7cffa6..3cb7455b 100644 --- a/src/experimental/filament/filament/object_manager.cc +++ b/src/render/filament/core/object_manager.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/object_manager.h" +#include "render/filament/core/object_manager.h" #include #include @@ -27,7 +27,7 @@ #include #include #include -#include "experimental/filament/filament/builtins.h" +#include "render/filament/core/builtins.h" #include "user/user_resource.h" namespace mujoco { @@ -40,7 +40,8 @@ std::string ResolveFilamentAssetPath(const std::string& filename) { static filament::Material* LoadMaterial(filament::Engine* engine, std::string_view filename) { const std::string path = ResolveFilamentAssetPath(std::string(filename)); - mjResource* resource = mju_openResource("", path.c_str(), nullptr, nullptr, 0); + mjResource* resource = + mju_openResource("", path.c_str(), nullptr, nullptr, 0); void* payload = nullptr; int size = mju_readResource(resource, const_cast(&payload)); filament::Material::Builder material_builder; @@ -50,31 +51,39 @@ static filament::Material* LoadMaterial(filament::Engine* engine, return material; }; -ObjectManager::ObjectManager(filament::Engine* engine) - : engine_(engine) { +ObjectManager::ObjectManager(filament::Engine* engine) : engine_(engine) { materials_[kPbr] = LoadMaterial(engine, "pbr.filamat"); materials_[kPbrPacked] = LoadMaterial(engine, "pbr_packed.filamat"); materials_[kPbrTransparent] = LoadMaterial(engine, "pbr_transparent.filamat"); - materials_[kPbrPackedTransparent] = LoadMaterial(engine, "pbr_packed_transparent.filamat"); + materials_[kPbrPackedTransparent] = + LoadMaterial(engine, "pbr_packed_transparent.filamat"); materials_[kPhong2d] = LoadMaterial(engine, "phong_2d.filamat"); materials_[kPhong2dFade] = LoadMaterial(engine, "phong_2d_fade.filamat"); - materials_[kPhong2dReflect] = LoadMaterial(engine, "phong_2d_reflect.filamat"); + materials_[kPhong2dReflect] = + LoadMaterial(engine, "phong_2d_reflect.filamat"); materials_[kPhong2dUv] = LoadMaterial(engine, "phong_2d_uv.filamat"); materials_[kPhong2dUvFade] = LoadMaterial(engine, "phong_2d_uv_fade.filamat"); - materials_[kPhong2dUvReflect] = LoadMaterial(engine, "phong_2d_uv_reflect.filamat"); + materials_[kPhong2dUvReflect] = + LoadMaterial(engine, "phong_2d_uv_reflect.filamat"); materials_[kPhongColor] = LoadMaterial(engine, "phong_color.filamat"); - materials_[kPhongColorFade] = LoadMaterial(engine, "phong_color_fade.filamat"); - materials_[kPhongColorReflect] = LoadMaterial(engine, "phong_color_reflect.filamat"); + materials_[kPhongColorFade] = + LoadMaterial(engine, "phong_color_fade.filamat"); + materials_[kPhongColorReflect] = + LoadMaterial(engine, "phong_color_reflect.filamat"); materials_[kPhongCube] = LoadMaterial(engine, "phong_cube.filamat"); materials_[kPhongCubeFade] = LoadMaterial(engine, "phong_cube_fade.filamat"); - materials_[kPhongCubeReflect] = LoadMaterial(engine, "phong_cube_reflect.filamat"); - materials_[kUnlitSegmentation] = LoadMaterial(engine, "unlit_segmentation.filamat"); + materials_[kPhongCubeReflect] = + LoadMaterial(engine, "phong_cube_reflect.filamat"); + materials_[kUnlitSegmentation] = + LoadMaterial(engine, "unlit_segmentation.filamat"); materials_[kUnlitDecor] = LoadMaterial(engine, "unlit_decor.filamat"); materials_[kUnlitDepth] = LoadMaterial(engine, "unlit_depth.filamat"); materials_[kUnlitUi] = LoadMaterial(engine, "unlit_ui.filamat"); - materials_[kOutlineComposite] = LoadMaterial(engine, "outline_composite.filamat"); + materials_[kOutlineComposite] = + LoadMaterial(engine, "outline_composite.filamat"); materials_[kOutlineFlatten] = LoadMaterial(engine, "outline_flatten.filamat"); - materials_[kOutlineJumpFlood] = LoadMaterial(engine, "outline_jumpflood.filamat"); + materials_[kOutlineJumpFlood] = + LoadMaterial(engine, "outline_jumpflood.filamat"); static uint8_t black_rgb[3] = {0, 0, 0}; static uint8_t white_rgb[3] = {255, 255, 255}; @@ -160,10 +169,7 @@ void ObjectManager::CreateQuadBuffers() { // large triangle is more efficient than a two-triangle quad because it // avoids the diagonal edge where pixels might be rasterized twice.) static const filament::math::float2 kVertices[3] = { - {-1.0f, -1.0f}, - { 3.0f, -1.0f}, - {-1.0f, 3.0f} - }; + {-1.0f, -1.0f}, {3.0f, -1.0f}, {-1.0f, 3.0f}}; static const uint16_t kIndices[3] = {0, 1, 2}; diff --git a/src/experimental/filament/filament/object_manager.h b/src/render/filament/core/object_manager.h similarity index 92% rename from src/experimental/filament/filament/object_manager.h rename to src/render/filament/core/object_manager.h index 022e6f0e..e3983c38 100644 --- a/src/experimental/filament/filament/object_manager.h +++ b/src/render/filament/core/object_manager.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_OBJECT_MANAGER_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_OBJECT_MANAGER_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_OBJECT_MANAGER_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_OBJECT_MANAGER_H_ #include #include @@ -27,7 +27,7 @@ #include #include #include -#include "experimental/filament/filament/builtins.h" +#include "render/filament/core/builtins.h" namespace mujoco { @@ -104,4 +104,4 @@ class ObjectManager { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_OBJECT_MANAGER_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_OBJECT_MANAGER_H_ diff --git a/src/experimental/filament/filament/outliner.cc b/src/render/filament/core/outliner.cc similarity index 95% rename from src/experimental/filament/filament/outliner.cc rename to src/render/filament/core/outliner.cc index 7534a0b0..a8d867ff 100644 --- a/src/experimental/filament/filament/outliner.cc +++ b/src/render/filament/core/outliner.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/outliner.h" +#include "render/filament/core/outliner.h" #include #include @@ -20,8 +20,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -29,10 +29,10 @@ #include #include #include -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/filament/render_target.h" -#include "experimental/filament/filament/texture.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/core/render_target.h" +#include "render/filament/core/texture.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -44,9 +44,7 @@ Outliner::Outliner(ObjectManager* object_mgr, uint8_t layer_mask, color_(color), thickness_(thickness) {} -Outliner::~Outliner() { - Reset(); -} +Outliner::~Outliner() { Reset(); } void Outliner::Prepare(int width, int height) { if (width == width_ && height == height_) { @@ -215,8 +213,7 @@ void Outliner::Reset() { height_ = 0; } -void Outliner::Render(filament::Renderer* renderer, - filament::View* view, +void Outliner::Render(filament::Renderer* renderer, filament::View* view, filament::RenderTarget* render_target) { filament::Viewport viewport = view->getViewport(); Prepare(viewport.width, viewport.height); diff --git a/src/experimental/filament/filament/outliner.h b/src/render/filament/core/outliner.h similarity index 88% rename from src/experimental/filament/filament/outliner.h rename to src/render/filament/core/outliner.h index 43338df6..1a430a76 100644 --- a/src/experimental/filament/filament/outliner.h +++ b/src/render/filament/core/outliner.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_OUTLINER_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_OUTLINER_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_OUTLINER_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_OUTLINER_H_ #include #include @@ -23,8 +23,8 @@ #include #include #include -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/filament/render_target.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/core/render_target.h" namespace mujoco { @@ -84,4 +84,4 @@ class Outliner { }; } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_OUTLINER_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_OUTLINER_H_ diff --git a/src/experimental/filament/filament/reflection_manager.cc b/src/render/filament/core/reflection_manager.cc similarity index 78% rename from src/experimental/filament/filament/reflection_manager.cc rename to src/render/filament/core/reflection_manager.cc index 433fba3e..3b8e3a95 100644 --- a/src/experimental/filament/filament/reflection_manager.cc +++ b/src/render/filament/core/reflection_manager.cc @@ -12,27 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/reflection_manager.h" +#include "render/filament/core/reflection_manager.h" + #include #include -#include "experimental/filament/filament/render_target.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/render_target.h" +#include "render/filament/mjrfilament.h" namespace mujoco { ReflectionManager::ReflectionManager(filament::Engine* engine) : engine_(engine) {} -ReflectionManager::~ReflectionManager() { -} +ReflectionManager::~ReflectionManager() {} -void ReflectionManager::ClearRenderables() { - renderables_.clear(); -} +void ReflectionManager::ClearRenderables() { renderables_.clear(); } mjrfTexture* ReflectionManager::Register(mjrfRenderable* renderable, int width, - int height) { + int height) { if (targets_.size() == renderables_.size()) { mjrfRenderTargetConfig config; mjrf_defaultRenderTargetConfig(&config); @@ -46,9 +44,7 @@ mjrfTexture* ReflectionManager::Register(mjrfRenderable* renderable, int width, return target->GetColorTexture(); } -int ReflectionManager::GetNumRenderables() const { - return renderables_.size(); -} +int ReflectionManager::GetNumRenderables() const { return renderables_.size(); } mjrfRenderable* ReflectionManager::GetRenderable(int index) const { return renderables_[index]; diff --git a/src/experimental/filament/filament/reflection_manager.h b/src/render/filament/core/reflection_manager.h similarity index 84% rename from src/experimental/filament/filament/reflection_manager.h rename to src/render/filament/core/reflection_manager.h index 3dff4b0d..29041aef 100644 --- a/src/experimental/filament/filament/reflection_manager.h +++ b/src/render/filament/core/reflection_manager.h @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_REFLECTION_MANAGER_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_REFLECTION_MANAGER_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_REFLECTION_MANAGER_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_REFLECTION_MANAGER_H_ #include #include #include -#include "experimental/filament/filament/render_target.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/render_target.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -58,4 +58,4 @@ class ReflectionManager { }; } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_REFLECTION_MANAGER_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_REFLECTION_MANAGER_H_ diff --git a/src/experimental/filament/filament/render_target.cc b/src/render/filament/core/render_target.cc similarity index 87% rename from src/experimental/filament/filament/render_target.cc rename to src/render/filament/core/render_target.cc index 033bcc11..1b709a02 100644 --- a/src/experimental/filament/filament/render_target.cc +++ b/src/render/filament/core/render_target.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/render_target.h" +#include "render/filament/core/render_target.h" #include #include @@ -22,12 +22,12 @@ #include #include #include -#include #include +#include #include #include -#include "experimental/filament/filament/texture.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/texture.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -39,9 +39,7 @@ RenderTarget::RenderTarget(filament::Engine* engine, } } -RenderTarget::~RenderTarget() noexcept { - Destroy(); -} +RenderTarget::~RenderTarget() noexcept { Destroy(); } void RenderTarget::Prepare(int width, int height) { if (width == width_ && height == height_) { @@ -65,7 +63,8 @@ void RenderTarget::Prepare(int width, int height) { color_config.format = config_.color_format; color_config.color_space = mjCOLORSPACE_LINEAR; color_flags.color_attachment = true; - color_texture_ = std::make_unique(engine_, color_config, color_flags); + color_texture_ = + std::make_unique(engine_, color_config, color_flags); mjrfTextureConfig depth_config; mjrf_defaultTextureConfig(&depth_config); @@ -76,7 +75,8 @@ void RenderTarget::Prepare(int width, int height) { depth_config.format = config_.depth_format; depth_config.color_space = mjCOLORSPACE_LINEAR; depth_flags.depth_attachment = true; - depth_texture_ = std::make_unique(engine_, depth_config, depth_flags); + depth_texture_ = + std::make_unique(engine_, depth_config, depth_flags); filament::RenderTarget::Builder builder; builder.texture(filament::RenderTarget::AttachmentPoint::COLOR, @@ -124,13 +124,9 @@ void RenderTarget::Destroy() { depth_texture_.reset(); } -Texture* RenderTarget::GetColorTexture() const { - return color_texture_.get(); -} +Texture* RenderTarget::GetColorTexture() const { return color_texture_.get(); } -Texture* RenderTarget::GetDepthTexture() const { - return depth_texture_.get(); -} +Texture* RenderTarget::GetDepthTexture() const { return depth_texture_.get(); } filament::RenderTarget* RenderTarget::GetFilamentRenderTarget() const { return render_target_; diff --git a/src/experimental/filament/filament/render_target.h b/src/render/filament/core/render_target.h similarity index 88% rename from src/experimental/filament/filament/render_target.h rename to src/render/filament/core/render_target.h index 8cb684f8..5051e331 100644 --- a/src/experimental/filament/filament/render_target.h +++ b/src/render/filament/core/render_target.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_RENDER_TARGET_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_RENDER_TARGET_H_ #include #include @@ -21,8 +21,8 @@ #include #include -#include "experimental/filament/filament/texture.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/texture.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -75,4 +75,4 @@ class RenderTarget : public mjrfRenderTarget { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDER_TARGET_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_RENDER_TARGET_H_ diff --git a/src/experimental/filament/filament/renderable.cc b/src/render/filament/core/renderable.cc similarity index 92% rename from src/experimental/filament/filament/renderable.cc rename to src/render/filament/core/renderable.cc index 3473f2ce..22cde83b 100644 --- a/src/experimental/filament/filament/renderable.cc +++ b/src/render/filament/core/renderable.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/renderable.h" +#include "render/filament/core/renderable.h" #include #include @@ -35,12 +35,12 @@ #include #include #include "engine/engine_vis_visualize.h" -#include "experimental/filament/filament_util.h" -#include "experimental/filament/filament/builtins.h" -#include "experimental/filament/filament/material_manager.h" -#include "experimental/filament/filament/mesh.h" -#include "experimental/filament/filament/reflection_manager.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/builtins.h" +#include "render/filament/core/material_manager.h" +#include "render/filament/core/mesh.h" +#include "render/filament/core/reflection_manager.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/support/filament_util.h" namespace mujoco { @@ -127,8 +127,8 @@ void Renderable::InitPartEntity(Part& part) { filament::IndexBuffer* index_buffer = part.mesh->GetFilamentIndexBuffer(); filament::RenderableManager::Builder builder(1); - builder.geometry(0, part.mesh->GetPrimitiveType(), vertex_buffer, index_buffer, - part.elem_offset, part.elem_count); + builder.geometry(0, part.mesh->GetPrimitiveType(), vertex_buffer, + index_buffer, part.elem_offset, part.elem_count); if (part.mesh->HasBounds()) { builder.boundingBox(part.mesh->GetBounds()); } else { @@ -184,9 +184,7 @@ void Renderable::UpdateTransform() { transform_ = tm.getTransform(tm.getInstance(parts_[0].entity)); } -const mat4f& Renderable::GetTransform() const { - return transform_; -} +const mat4f& Renderable::GetTransform() const { return transform_; } void Renderable::AppendMesh(const Mesh* mesh) { Part& part = parts_.emplace_back(); @@ -232,9 +230,7 @@ void Renderable::UpdateMaterial(const mjrfMaterial& material) { material_ = material; } -const mjrfMaterial& Renderable::GetMaterial() const { - return material_; -} +const mjrfMaterial& Renderable::GetMaterial() const { return material_; } void Renderable::Prepare(std::span requests, ReflectionManager* reflection_mgr) { @@ -383,11 +379,11 @@ void Renderable::BindMaterialInstance(const mjrfRenderRequest& request) { draw_queue_.pop_front(); } -MaterialManager::MaterialKey Renderable::SetMaterialInstance(MaterialManager::MaterialKey key) { +MaterialManager::MaterialKey Renderable::SetMaterialInstance( + MaterialManager::MaterialKey key) { MaterialManager::MaterialKey prev = curr_state_.material_key; if (key != curr_state_.material_key) { - filament::MaterialInstance* instance = - material_mgr_->GetInstance(key); + filament::MaterialInstance* instance = material_mgr_->GetInstance(key); filament::RenderableManager& rm = GetEngine()->getRenderableManager(); for (Part& part : parts_) { filament::RenderableManager::Instance ri = rm.getInstance(part.entity); @@ -440,7 +436,8 @@ void Renderable::SetReceiveShadows(bool receive_shadows) { filament::RenderableManager& rm = GetEngine()->getRenderableManager(); for (Part& part : parts_) { - rm.setReceiveShadows(rm.getInstance(part.entity), params_.receive_shadows); + rm.setReceiveShadows(rm.getInstance(part.entity), + params_.receive_shadows); } } } @@ -454,12 +451,13 @@ void Renderable::SetWireframe(bool wireframe) { filament::RenderableManager& rm = GetEngine()->getRenderableManager(); for (Part& part : parts_) { - filament::VertexBuffer* vertex_buffer = part.mesh->GetFilamentVertexBuffer(); + filament::VertexBuffer* vertex_buffer = + part.mesh->GetFilamentVertexBuffer(); filament::IndexBuffer* index_buffer = part.mesh->GetFilamentIndexBuffer(); - rm.setGeometryAt(rm.getInstance(part.entity), 0, - wireframe ? kWireframeType : part.mesh->GetPrimitiveType(), - vertex_buffer, index_buffer, part.elem_offset, - part.elem_count); + rm.setGeometryAt( + rm.getInstance(part.entity), 0, + wireframe ? kWireframeType : part.mesh->GetPrimitiveType(), + vertex_buffer, index_buffer, part.elem_offset, part.elem_count); } } } @@ -509,7 +507,8 @@ void Renderable::SetGeomMesh(mjtGeom type, int nstack, int nslice, int nquad) { bottom *= mat4f::scaling(float3{trs.size.x, trs.size.y, xz_size}); return bottom; } else { - mju_error("Invalid index for capsule geom: %d (expected [0,2])", index); + mju_error("Invalid index for capsule geom: %d (expected [0,2])", + index); return trs.ToTransform(); } }; @@ -538,7 +537,8 @@ void Renderable::SetGeomMesh(mjtGeom type, int nstack, int nslice, int nquad) { bottom *= mat4f::scaling(trs.size); return bottom; } else { - mju_error("Invalid index for cylinder geom: %d (expected [0,2])", index); + mju_error("Invalid index for cylinder geom: %d (expected [0,2])", + index); return trs.ToTransform(); } }; @@ -564,7 +564,8 @@ void Renderable::SetGeomMesh(mjtGeom type, int nstack, int nslice, int nquad) { mat4f top_disk = base; top_disk *= mat4f::translation(float3{0, 0, trs.size.z}); top_disk *= mat4f::rotation(std::numbers::pi, float3{1, 0, 0}); - top_disk *= mat4f::scaling(float3{kArrowHeadSize, kArrowHeadSize, 1.0f}); + top_disk *= + mat4f::scaling(float3{kArrowHeadSize, kArrowHeadSize, 1.0f}); return top_disk * mat4f::scaling(trs.size); } else if (index == 3) { mat4f bottom = base; @@ -583,9 +584,9 @@ void Renderable::SetGeomMesh(mjtGeom type, int nstack, int nslice, int nquad) { AppendMesh(builtins->Disk()); get_transform_fn_ = [](int index, const Trs& trs) { - mat4f base = mat4f(trs.rotation, trs.translation); - base *= mat4f::scaling(float3{1, 1, kArrowScale}); - base *= mat4f::translation(float3{0, 0, trs.size.z}); + mat4f base = mat4f(trs.rotation, trs.translation); + base *= mat4f::scaling(float3{1, 1, kArrowScale}); + base *= mat4f::translation(float3{0, 0, trs.size.z}); if (index == 0) { return base * mat4f::scaling(trs.size); } else if (index == 1) { @@ -598,7 +599,8 @@ void Renderable::SetGeomMesh(mjtGeom type, int nstack, int nslice, int nquad) { bottom *= mat4f::rotation(std::numbers::pi, float3{1, 0, 0}); return bottom * mat4f::scaling(trs.size); } else { - mju_error("Invalid index for arrow1 geom: %d (expected [0,2])", index); + mju_error("Invalid index for arrow1 geom: %d (expected [0,2])", + index); return trs.ToTransform(); } }; @@ -625,20 +627,23 @@ void Renderable::SetGeomMesh(mjtGeom type, int nstack, int nslice, int nquad) { mat4f bottom = base; bottom *= mat4f::translation(float3{0, 0, -trs.size.z}); bottom *= mat4f::rotation(std::numbers::pi, float3{1, 0, 0}); - bottom *= mat4f::scaling(float3{kArrowHeadSize, kArrowHeadSize, 1.0f}); + bottom *= + mat4f::scaling(float3{kArrowHeadSize, kArrowHeadSize, 1.0f}); return bottom * mat4f::scaling(trs.size); } else if (index == 3) { mat4f top_disk = base; top_disk *= mat4f::translation(float3{0, 0, trs.size.z}); top_disk *= mat4f::rotation(std::numbers::pi, float3{1, 0, 0}); - top_disk *= mat4f::scaling(float3{kArrowHeadSize, kArrowHeadSize, 1.0f}); + top_disk *= + mat4f::scaling(float3{kArrowHeadSize, kArrowHeadSize, 1.0f}); return top_disk * mat4f::scaling(trs.size); } else if (index == 4) { mat4f bottom_disk = base; bottom_disk *= mat4f::translation(float3{0, 0, -trs.size.z}); return bottom_disk * mat4f::scaling(trs.size); } else { - mju_error("Invalid index for arrow2 geom: %d (expected [0,4])", index); + mju_error("Invalid index for arrow2 geom: %d (expected [0,4])", + index); return trs.ToTransform(); } }; diff --git a/src/experimental/filament/filament/renderable.h b/src/render/filament/core/renderable.h similarity index 90% rename from src/experimental/filament/filament/renderable.h rename to src/render/filament/core/renderable.h index be56e482..42075c1e 100644 --- a/src/experimental/filament/filament/renderable.h +++ b/src/render/filament/core/renderable.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLE_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLE_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_RENDERABLE_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_RENDERABLE_H_ #include #include @@ -28,19 +28,19 @@ #include #include #include -#include "experimental/filament/filament/material_manager.h" -#include "experimental/filament/filament/mesh.h" -#include "experimental/filament/filament/reflection_manager.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/material_manager.h" +#include "render/filament/core/mesh.h" +#include "render/filament/core/reflection_manager.h" +#include "render/filament/mjrfilament.h" namespace mujoco { enum LayerMask : uint8_t { - kLayerMask_Object = 0x01 << 1, - kLayerMask_Decor = 0x01 << 2, + kLayerMask_Object = 0x01 << 1, + kLayerMask_Decor = 0x01 << 2, kLayerMask_Outline = 0x01 << 3, - kLayerMask_All = 0xff, - kLayerMask_None = 0x00, + kLayerMask_All = 0xff, + kLayerMask_None = 0x00, }; // A Renderable is effectively two things: a mesh and a material. @@ -114,7 +114,8 @@ class Renderable : public mjrfRenderable { // Binds the material instance for the given render request. void BindMaterialInstance(const mjrfRenderRequest& request); - MaterialManager::MaterialKey SetMaterialInstance(MaterialManager::MaterialKey key); + MaterialManager::MaterialKey SetMaterialInstance( + MaterialManager::MaterialKey key); static Renderable* downcast(mjrfRenderable* renderable) { return static_cast(renderable); @@ -141,7 +142,7 @@ class Renderable : public mjrfRenderable { filament::math::float3 size{1.0f, 1.0f, 1.0f}; filament::math::mat4f ToTransform() const { return filament::math::mat4f(rotation, translation) * - filament::math::mat4f::scaling(size); + filament::math::mat4f::scaling(size); } }; @@ -185,4 +186,4 @@ class Renderable : public mjrfRenderable { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_RENDERABLE_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_RENDERABLE_H_ diff --git a/src/experimental/filament/filament/scene_view.cc b/src/render/filament/core/scene_view.cc similarity index 91% rename from src/experimental/filament/filament/scene_view.cc rename to src/render/filament/core/scene_view.cc index 87c3afba..8483de5b 100644 --- a/src/experimental/filament/filament/scene_view.cc +++ b/src/render/filament/core/scene_view.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/scene_view.h" +#include "render/filament/core/scene_view.h" #include #include @@ -24,32 +24,32 @@ #include #include #include -#include -#include #include +#include +#include #include #include #include #include +#include #include #include #include -#include #include #include #include #include -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/filament/outliner.h" -#include "experimental/filament/filament/reflection_manager.h" -#include "experimental/filament/filament_util.h" -#include "experimental/filament/filament/color_grading_options.h" -#include "experimental/filament/filament/light.h" -#include "experimental/filament/filament/material_manager.h" -#include "experimental/filament/filament/render_target.h" -#include "experimental/filament/filament/renderable.h" -#include "experimental/filament/filament/texture.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/color_grading_options.h" +#include "render/filament/core/light.h" +#include "render/filament/core/material_manager.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/core/outliner.h" +#include "render/filament/core/reflection_manager.h" +#include "render/filament/core/render_target.h" +#include "render/filament/core/renderable.h" +#include "render/filament/core/texture.h" +#include "render/filament/mjrfilament.h" +#include "render/filament/support/filament_util.h" namespace mujoco { @@ -94,8 +94,8 @@ static void SetupCamera(const mjrCamera& cam, : 0.5f * aspect_ratio * (cam.frustum_top - cam.frustum_bottom); camera->lookAt(cam_pos, cam_at, cam_up); camera->setProjection(type, cam.frustum_center - halfwidth, - cam.frustum_center + halfwidth, cam.frustum_bottom, - cam.frustum_top, cam.frustum_near, cam.frustum_far); + cam.frustum_center + halfwidth, cam.frustum_bottom, + cam.frustum_top, cam.frustum_near, cam.frustum_far); } // Sets up the `reflection_camera`'s projection matrix so that it is a @@ -120,7 +120,8 @@ static void SetupReflectionCamera(const mat4& surface_xform, const float3 plane_normal_camera = view_normal; const float plane_dist_camera = -dot(plane_normal_camera, view_pos); const float4 oblique_plane(plane_normal_camera, plane_dist_camera); - const mat4 oblique = CalculateObliqueProjection(src_projection, oblique_plane); + const mat4 oblique = + CalculateObliqueProjection(src_projection, oblique_plane); reflection_camera->setCustomProjection(oblique, near, far); } @@ -252,7 +253,8 @@ void SceneView::PrepareToRender(std::span requests) { } } -void SceneView::Render(filament::Renderer* renderer, const mjrfRenderRequest& request) { +void SceneView::Render(filament::Renderer* renderer, + const mjrfRenderRequest& request) { if (request.scene != this) { mju_error("Invalid scene for SceneView::Render."); } @@ -348,9 +350,7 @@ void SceneView::SetColorGradingOptions(const ColorGradingOptions& opts) { color_grading_options_ = opts; } -filament::View* SceneView::GetDefaultRenderView() { - return main_view_; -} +filament::View* SceneView::GetDefaultRenderView() { return main_view_; } ColorGradingOptions SceneView::GetColorGradingOptions() const { return color_grading_options_; @@ -424,17 +424,17 @@ void SceneView::Configure(const mjModel* model) { fog_opts.enabled = ReadElement(model, "filament.fog.enabled", fog_opts.enabled); fog_opts.color = ReadElement(model, "filament.fog.color", fog_opts.color); - fog_opts.distance = ReadElement( - model, "filament.fog.distance", fog_opts.distance); - fog_opts.density = ReadElement( - model, "filament.fog.density", fog_opts.density); - fog_opts.cutOffDistance = ReadElement( - model, "filament.fog.cutOffDistance", fog_opts.cutOffDistance); - fog_opts.maximumOpacity = ReadElement( - model, "filament.fog.maximumOpacity", fog_opts.maximumOpacity); + fog_opts.distance = + ReadElement(model, "filament.fog.distance", fog_opts.distance); + fog_opts.density = + ReadElement(model, "filament.fog.density", fog_opts.density); + fog_opts.cutOffDistance = ReadElement(model, "filament.fog.cutOffDistance", + fog_opts.cutOffDistance); + fog_opts.maximumOpacity = ReadElement(model, "filament.fog.maximumOpacity", + fog_opts.maximumOpacity); fog_opts.height = ReadElement(model, "filament.fog.height", fog_opts.height); - fog_opts.heightFalloff = ReadElement( - model, "filament.fog.heightFalloff", fog_opts.heightFalloff); + fog_opts.heightFalloff = + ReadElement(model, "filament.fog.heightFalloff", fog_opts.heightFalloff); fog_opts.inScatteringStart = ReadElement( model, "filament.fog.inScatteringStart", fog_opts.inScatteringStart); fog_opts.inScatteringSize = ReadElement( diff --git a/src/experimental/filament/filament/scene_view.h b/src/render/filament/core/scene_view.h similarity index 84% rename from src/experimental/filament/filament/scene_view.h rename to src/render/filament/core/scene_view.h index b72082c1..e46893d0 100644 --- a/src/experimental/filament/filament/scene_view.h +++ b/src/render/filament/core/scene_view.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_SCENE_VIEW_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_SCENE_VIEW_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_SCENE_VIEW_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_SCENE_VIEW_H_ #include #include @@ -25,15 +25,15 @@ #include #include #include -#include "experimental/filament/filament/color_grading_options.h" -#include "experimental/filament/filament/light.h" -#include "experimental/filament/filament/material_manager.h" -#include "experimental/filament/filament/object_manager.h" -#include "experimental/filament/filament/outliner.h" -#include "experimental/filament/filament/renderable.h" -#include "experimental/filament/filament/reflection_manager.h" -#include "experimental/filament/filament/texture.h" -#include "experimental/filament/render_context_filament.h" +#include "render/filament/core/color_grading_options.h" +#include "render/filament/core/light.h" +#include "render/filament/core/material_manager.h" +#include "render/filament/core/object_manager.h" +#include "render/filament/core/outliner.h" +#include "render/filament/core/reflection_manager.h" +#include "render/filament/core/renderable.h" +#include "render/filament/core/texture.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -113,4 +113,4 @@ class SceneView : public mjrfScene { }; } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_SCENE_VIEW_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_SCENE_VIEW_H_ diff --git a/src/experimental/filament/filament/texture.cc b/src/render/filament/core/texture.cc similarity index 96% rename from src/experimental/filament/filament/texture.cc rename to src/render/filament/core/texture.cc index 1dc8912a..88e7782b 100644 --- a/src/experimental/filament/filament/texture.cc +++ b/src/render/filament/core/texture.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament/texture.h" +#include "render/filament/core/texture.h" #include #include @@ -24,7 +24,7 @@ #include #include #include -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -67,7 +67,8 @@ static int GetNumChannels(const mjrfTextureConfig& config) { } } -static filament::Texture::Format GetTextureFormat(const mjrfTextureConfig& config) { +static filament::Texture::Format GetTextureFormat( + const mjrfTextureConfig& config) { switch (config.format) { case mjPIXEL_FORMAT_R8: return filament::Texture::Format::R; @@ -78,7 +79,7 @@ static filament::Texture::Format GetTextureFormat(const mjrfTextureConfig& confi default: mju_error("Unsupported format: %d", (int)config.format); return filament::Texture::Format::UNUSED; - } + } } static filament::Texture::InternalFormat GetTextureInternalFormat( @@ -204,7 +205,7 @@ void Texture::Upload(const mjrfTextureData& data) { if (config_.width == config_.height) { uint8_t* copy = new uint8_t[num_bytes]; auto release_callback = +[](void* buffer, size_t size, void* user) { - delete [] reinterpret_cast(buffer); + delete[] reinterpret_cast(buffer); }; for (int i = 0; i < kNumFacesPerCube; ++i) { std::memcpy(copy + (i * face_size), data.bytes, face_size); diff --git a/src/experimental/filament/filament/texture.h b/src/render/filament/core/texture.h similarity index 91% rename from src/experimental/filament/filament/texture.h rename to src/render/filament/core/texture.h index bc58686d..71c9a686 100644 --- a/src/experimental/filament/filament/texture.h +++ b/src/render/filament/core/texture.h @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_TEXTURE_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_TEXTURE_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_CORE_TEXTURE_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_CORE_TEXTURE_H_ #include #include #include -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" // Functions for creating filament textures. namespace mujoco { @@ -84,4 +84,4 @@ class Texture : public mjrfTexture { }; } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_TEXTURE_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_CORE_TEXTURE_H_ diff --git a/src/experimental/filament/render_context_filament.cc b/src/render/filament/mjrfilament.cc similarity index 91% rename from src/experimental/filament/render_context_filament.cc rename to src/render/filament/mjrfilament.cc index d653b50f..866fbdbb 100644 --- a/src/experimental/filament/render_context_filament.cc +++ b/src/render/filament/mjrfilament.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" #include #include @@ -22,13 +22,13 @@ #include #include #include -#include "experimental/filament/filament/filament_context.h" -#include "experimental/filament/filament/light.h" -#include "experimental/filament/filament/mesh.h" -#include "experimental/filament/filament/render_target.h" -#include "experimental/filament/filament/renderable.h" -#include "experimental/filament/filament/scene_view.h" -#include "experimental/filament/filament/texture.h" +#include "render/filament/core/filament_context.h" +#include "render/filament/core/light.h" +#include "render/filament/core/mesh.h" +#include "render/filament/core/render_target.h" +#include "render/filament/core/renderable.h" +#include "render/filament/core/scene_view.h" +#include "render/filament/core/texture.h" template static void setf(float (&arr)[N], const std::array& values) { @@ -125,7 +125,7 @@ void mjrf_destroyContext(mjrfContext* ctx) { } mjrfTexture* mjrf_createTexture(mjrfContext* ctx, - const mjrfTextureConfig* config) { + const mjrfTextureConfig* config) { return new mujoco::Texture( mujoco::FilamentContext::downcast(ctx)->GetEngine(), *config); } @@ -161,7 +161,7 @@ void mjrf_destroyLight(mjrfLight* light) { } mjrfRenderable* mjrf_createRenderable(mjrfContext* ctx, - const mjrfRenderableParams* params) { + const mjrfRenderableParams* params) { return new mujoco::Renderable( mujoco::FilamentContext::downcast(ctx)->GetEngine(), *params, mujoco::FilamentContext::downcast(ctx)->GetMaterialManager()); @@ -171,8 +171,8 @@ void mjrf_destroyRenderable(mjrfRenderable* renderable) { delete mujoco::Renderable::downcast(renderable); } -mjrfRenderTarget* mjrf_createRenderTarget(mjrfContext* ctx, - const mjrfRenderTargetConfig* config) { +mjrfRenderTarget* mjrf_createRenderTarget( + mjrfContext* ctx, const mjrfRenderTargetConfig* config) { return new mujoco::RenderTarget( mujoco::FilamentContext::downcast(ctx)->GetEngine(), *config); } @@ -232,8 +232,8 @@ void mjrf_setRenderableMesh(mjrfRenderable* renderable, const mjrfMesh* mesh, void mjrf_setRenderableGeomMesh(mjrfRenderable* renderable, mjtGeom type, int nstack, int nslice, int nquad) { - mujoco::Renderable::downcast(renderable)->SetGeomMesh(type, nstack, nslice, - nquad); + mujoco::Renderable::downcast(renderable) + ->SetGeomMesh(type, nstack, nslice, nquad); } void mjrf_setRenderableMaterial(mjrfRenderable* renderable, @@ -253,8 +253,7 @@ void mjrf_setRenderableTransform(mjrfRenderable* renderable, const filament::math::mat3f frotation{rotation[0], rotation[3], rotation[6], rotation[1], rotation[4], rotation[7], rotation[2], rotation[5], rotation[8]}; - mujoco::Renderable::downcast(renderable) - ->SetTransform(fposition, frotation); + mujoco::Renderable::downcast(renderable)->SetTransform(fposition, frotation); } void mjrf_setRenderableSize(mjrfRenderable* renderable, const float size[3]) { @@ -293,7 +292,7 @@ void mjrf_configureSceneFromModel(mjrfScene* scene, const mjModel* model) { } void mjrf_resizeRenderTarget(mjrfRenderTarget* render_target, int width, - int height) { + int height) { mujoco::RenderTarget::downcast(render_target)->Prepare(width, height); } diff --git a/src/experimental/filament/render_context_filament.h b/src/render/filament/mjrfilament.h similarity index 99% rename from src/experimental/filament/render_context_filament.h rename to src/render/filament/mjrfilament.h index 461042c9..7a1ee479 100644 --- a/src/experimental/filament/render_context_filament.h +++ b/src/render/filament/mjrfilament.h @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_RENDER_CONTEXT_FILAMENT_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_RENDER_CONTEXT_FILAMENT_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_MJRFILAMENT_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_MJRFILAMENT_H_ #include @@ -478,4 +478,4 @@ void mjrf_DEBUG_drawImguiEditor(mjrfScene* scene); } // extern "C" #endif -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_RENDER_CONTEXT_FILAMENT_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_MJRFILAMENT_H_ diff --git a/src/experimental/filament/render_context_filament_cpp.h b/src/render/filament/mjrfilament_cpp.h similarity index 90% rename from src/experimental/filament/render_context_filament_cpp.h rename to src/render/filament/mjrfilament_cpp.h index 9f075a3f..5cd7954d 100644 --- a/src/experimental/filament/render_context_filament_cpp.h +++ b/src/render/filament/mjrfilament_cpp.h @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_RENDER_CONTEXT_FILAMENT_CPP_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_RENDER_CONTEXT_FILAMENT_CPP_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_MJRFILAMENT_CPP_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_MJRFILAMENT_CPP_H_ #include #include -#include "experimental/filament/render_context_filament.h" +#include "render/filament/mjrfilament.h" namespace mujoco { @@ -71,4 +71,4 @@ std::string ResolveFilamentAssetPath(const std::string& filename); } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_RENDER_CONTEXT_FILAMENT_CPP_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_MJRFILAMENT_CPP_H_ diff --git a/src/experimental/filament/filament_util.cc b/src/render/filament/support/filament_util.cc similarity index 89% rename from src/experimental/filament/filament_util.cc rename to src/render/filament/support/filament_util.cc index bd092a69..9faba9a3 100644 --- a/src/experimental/filament/filament_util.cc +++ b/src/render/filament/support/filament_util.cc @@ -12,15 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "experimental/filament/filament_util.h" +#include "render/filament/support/filament_util.h" + #include +#include #include #include #include #include #include -#include namespace mujoco { @@ -86,7 +87,6 @@ mat4 CalculateObliqueProjection(const mat4& projection, const float4& plane) { return res; } - float4 CalculateOrientation(const float3& normal) { float3 tangent; float3 bitangent; @@ -104,19 +104,17 @@ float4 CalculateOrientation(const float3& normal) { return float4(orientation.xyz, orientation.w); } -float3 CalculateNormal( - const filament::math::float3& p1, - const filament::math::float3& p2, - const filament::math::float3& p3) { +float3 CalculateNormal(const filament::math::float3& p1, + const filament::math::float3& p2, + const filament::math::float3& p3) { const float3 v12 = p2 - p1; const float3 v13 = p3 - p1; return normalize(cross(v12, v13)); } -float4 CalculateOrientation( - const filament::math::float3& p1, - const filament::math::float3& p2, - const filament::math::float3& p3) { +float4 CalculateOrientation(const filament::math::float3& p1, + const filament::math::float3& p2, + const filament::math::float3& p3) { return CalculateOrientation(CalculateNormal(p1, p2, p3)); } diff --git a/src/experimental/filament/filament_util.h b/src/render/filament/support/filament_util.h similarity index 88% rename from src/experimental/filament/filament_util.h rename to src/render/filament/support/filament_util.h index 7cc9ee33..bf1b377f 100644 --- a/src/experimental/filament/filament_util.h +++ b/src/render/filament/support/filament_util.h @@ -12,10 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#ifndef MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_UTIL_H_ -#define MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_UTIL_H_ +#ifndef MUJOCO_SRC_RENDER_FILAMENT_SUPPORT_FILAMENT_UTIL_H_ +#define MUJOCO_SRC_RENDER_FILAMENT_SUPPORT_FILAMENT_UTIL_H_ #include + #include #include #include @@ -68,20 +69,18 @@ filament::math::mat4 CalculateObliqueProjection( const filament::math::float4& plane); // Calculates the normal of a triangle given its three vertices. -filament::math::float3 CalculateNormal( - const filament::math::float3& p1, - const filament::math::float3& p2, - const filament::math::float3& p3); +filament::math::float3 CalculateNormal(const filament::math::float3& p1, + const filament::math::float3& p2, + const filament::math::float3& p3); // Calculates the orientation of a vertex given just its normal. filament::math::float4 CalculateOrientation( const filament::math::float3& normal); // Calculates the orientation of a triangle given its three vertices. -filament::math::float4 CalculateOrientation( - const filament::math::float3& p1, - const filament::math::float3& p2, - const filament::math::float3& p3); +filament::math::float4 CalculateOrientation(const filament::math::float3& p1, + const filament::math::float3& p2, + const filament::math::float3& p3); // Reads a value with the given name from the mjModel's data sections. The // default_value is returned if the named element is not found. @@ -130,4 +129,4 @@ T ReadElement(const mjModel* model, const char* name, T default_value = T()) { } // namespace mujoco -#endif // MUJOCO_SRC_EXPERIMENTAL_FILAMENT_FILAMENT_UTIL_H_ +#endif // MUJOCO_SRC_RENDER_FILAMENT_SUPPORT_FILAMENT_UTIL_H_