Skip to content

Commit

Permalink
Oss release 28.2.0 created 2024-06-11-16-11
Browse files Browse the repository at this point in the history
see CHANGELOG.md for details

Original commit sha: c428ba6f951753a4e252d3c25dbfcb4aec81b1ab

Co-authored-by: Askanaz Torosyan <46795157+nVxx@users.noreply.github.com>
Co-authored-by: Daniel Haas <25718295+bojackHaasman@users.noreply.github.com>
Co-authored-by: Mirko Sova <64351017+smirko-dev@users.noreply.github.com>
Co-authored-by: Violin Yanev <violinyanev@users.noreply.github.com>
Co-authored-by: Carsten Rohn <710234+delyas@users.noreply.github.com>
Co-authored-by: Tobias Hammer <tohammer@users.noreply.github.com>
Co-authored-by: Bernhard Kisslinger <65217745+bkisslinger@users.noreply.github.com>
Co-authored-by: Martin Veith <3490591+veithm@users.noreply.github.com>
Co-authored-by: Jonathan Conrad <833168+jcsneaker@users.noreply.github.com>
Co-authored-by: Mohamed Sharaf-El-Deen <769940+mohhsharaf@users.noreply.github.com>
Co-authored-by: Markus Keppler <92277233+markuskeppler@users.noreply.github.com>
Co-authored-by: Chan Tong Yan <4199832+imyumichan@users.noreply.github.com>
  • Loading branch information
13 people committed Jun 11, 2024
1 parent 395fc4e commit cceef4f
Show file tree
Hide file tree
Showing 669 changed files with 24,919 additions and 11,514 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/build*/
*~
.vscode/
.cache/
*.swp
*.orig
*.pyc
Expand Down
64 changes: 64 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,69 @@
# Ramses Changelog

28.2.0
-------------------

### Added <a name=28.2.0.Added></a>
- Added feature level 02
- Note that EFeatureLevel_Latest now points to EFeatureLevel_02
- New features:
- Added support for Uniform Buffer Objects (Uniform Blocks) in shaders
- Added semantics for UBO:
- `EEffectUniformSemantic::ModelBlock`, `EEffectUniformSemantic::CameraBlock`, `EEffectUniformSemantic::ModelCameraBlock` (fully implemented)
- `EEffectUniformSemantic::FramebufferBlock`, `EEffectUniformSemantic::SceneBlock` (not yet implemented on renderer side)
- Added support for merging content into an existing scene
- Added support for merging content of several files to ramses-viewer
- Add experimental support for Vulkan:
- Building vulkan device needs to be explicitly enabled using cmake option `ramses-sdk_ENABLE_DEVICE_TYPE_VULKAN`
- Added new enum value `EDeviceType::Vulkan`
- Scene can be configured to specify render backend compatibility using `SceneConfig::setRenderBackendCompatibility`
- Added glad (OpenGL loader library)

### Changed <a name=28.2.0.Changed></a>
- Redesigned CMake build option for freetype/harfbuzz. Bundled package is used by default unless `ramses-sdk_USE_PLATFORM_FREETYPE` is ON.
- Removed `ramses-sdk_ALLOW_PLATFORM_FREETYPE` and `ramses-sdk_ALLOW_CUSTOM_FREETYPE`
- Replaced with `ramses-sdk_USE_PLATFORM_FREETYPE` for system package, and set to `OFF` by default
- SkinBindings are now updated at the end of logic update
- Upgraded internal abseil to 20240116.1
- Upgraded glslang to 14.1.0
- Allow embedded compositing using DMA buffers even if EGL extension `EGL_WL_bind_wayland_display` is not available
- Mark APIs related to system compositor controller on renderer side as deprecated

### Fixed <a name=28.2.0.Fixed></a>
- SkinBinding update order bug where skin bindings use old values in update
- SkinBinding serializing inverse binding matrices in wrong order
- Fixed scene locked in subscription requested state, when
- Scene is created in LocalOnly mode
- Display is destroyed, before the scene entered Ready state
- Can create display with wayland IVI window without setting IVI layer if system compositor controller not enabled
- Fixed possible crash when statistics logs are enabled
- EGLContext for async effect uploader is no longer created if feature is disabled in DisplayConfig
- Improved validation messages for RenderBuffers
- Removed warning for empty render group

28.1.1
-------------------
### Added <a name=28.1.1.Added></a>
- added ramsh commands to modify some object parameters (visibility, uniform inputs)

### Fixed <a name=28.1.1.Fixed></a>
- Attempt to read pixels from multisampled offscreen buffer no longer crashes but fails with an event
- Removed `ramses-sdk_ENABLE_LOGIC` flag, logic cannot be excluded from build anymore

28.1.0
-------------------
### Added <a name=28.1.0.Added></a>

- Added `DisplayConfig::setWindowTitle()`
- `ramses-viewer`: show scenes that are published remotely
- `ramses-viewer`: show stream surfaces

### Fixed <a name=28.1.0.Fixed></a>
- Handle time overflow when calculating watchdog notification intervals (IThreadWatchdogNotification)
- Added sanity check for display thread sleep timeout (skub mode)
- Fixed missing watchdog callbacks if notification interval is set to 1ms (RamsesFrameworkConfig::setWatchdogNotificationInterval)
- Instance prefix for logging (RamsesFrameworkConfig::setLoggingInstanceName) now works also for dynamically linked renderer library

28.0.0
-------------------
### Added <a name=28.0.0.Added></a>
Expand Down
13 changes: 6 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.13)

set(RAMSES_VERSION_MAJOR 28)
set(RAMSES_VERSION_MINOR 0)
set(RAMSES_VERSION_MINOR 2)
set(RAMSES_VERSION_PATCH 0)
set(RAMSES_VERSION_POSTFIX "")
set(RAMSES_VERSION "${RAMSES_VERSION_MAJOR}.${RAMSES_VERSION_MINOR}.${RAMSES_VERSION_PATCH}${RAMSES_VERSION_POSTFIX}")
Expand Down Expand Up @@ -43,12 +43,12 @@ option(ramses-sdk_ENABLE_WINDOW_TYPE_ANDROID "Enable building for And
option(ramses-sdk_ENABLE_WINDOW_TYPE_IOS "Enable building for iOS window" OFF)
option(ramses-sdk_ENABLE_WINDOW_TYPE_WAYLAND_IVI "Enable building for Wayland ivi window" OFF)
option(ramses-sdk_ENABLE_WINDOW_TYPE_WAYLAND_WL_SHELL "Enable building for Wayland wl_shell window" OFF)
option(ramses-sdk_ENABLE_DEVICE_TYPE_VULKAN "Enable building for an EXPERIMENTAL vulkan device" OFF)

# shared lib options
option(ramses-sdk_BUILD_FULL_SHARED_LIB "Build full shared libraries (with renderer)." ON)

# optional components
option(ramses-sdk_ENABLE_LOGIC "Enable ramses logic - a component for scripting and animation." ON)
option(ramses-sdk_TEXT_SUPPORT "Enable/disable the ramses text API." ON)
option(ramses-sdk_ENABLE_TCP_SUPPORT "Enable use of TCP communication." ON)
option(ramses-sdk_ENABLE_DLT "Enable DLT logging support." ON)
Expand All @@ -66,11 +66,10 @@ option(ramses-sdk_ENABLE_FLATBUFFERS_GENERATION "Enable generation of fl
option(ramses-sdk_USE_IMAGEMAGICK "Enable tests depending on image magick compare" OFF)

# find options
option(ramses-sdk_ALLOW_PLATFORM_GLM "Enable to search for platform provided OpenGL Math library (glm)." ON)
option(ramses-sdk_ALLOW_PLATFORM_FREETYPE "Enable to search for platform provided freetype and harfbuzz." ON)
option(ramses-sdk_ALLOW_CUSTOM_FREETYPE "Allow usage of custom freetype and harfbuzz if platform provided one was not found." ON)
option(ramses-sdk_ALLOW_PLATFORM_LZ4 "Enable to search for platform provided lz4" ON)
option(ramses-sdk_USE_PLATFORM_LUAJIT "Uses platform provided luajit instead of internal lua" OFF)
option(ramses-sdk_ALLOW_PLATFORM_GLM "Enable to search for platform-provided OpenGL Math library (glm)." ON)
option(ramses-sdk_ALLOW_PLATFORM_LZ4 "Enable to search for platform-provided lz4" ON)
option(ramses-sdk_USE_PLATFORM_FREETYPE "Use platform-provided freetype and harfbuzz package instead of bundled package." OFF)
option(ramses-sdk_USE_PLATFORM_LUAJIT "Use platform-provided luajit instead of internal lua" OFF)

# other options
set(ramses-sdk_FOLDER_PREFIX "" CACHE STRING "Optional folder prefix for targets in visual studio.")
Expand Down
96 changes: 24 additions & 72 deletions cmake/modules/FindOpenGL.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,75 +6,27 @@
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
# -------------------------------------------------------------------------

IF(CMAKE_SYSTEM_NAME MATCHES "Windows")

# we always use the Khronos reference headers
SET(OpenGL_INCLUDE_DIRS
${ramses-sdk_SOURCE_DIR}/external/khronos
)

# Windows has all OpenGL/WGL symbols in one lib - opengl32.lib
SET(OpenGL_LIBRARIES opengl32)
set(OpenGL_DEFINITIONS "-DDESKTOP_GL")

MARK_AS_ADVANCED(
OpenGL_INCLUDE_DIRS
OpenGL_LIBRARIES
OpenGL_DEFINITIONS
)

SET(OpenGL_FOUND TRUE)

ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Linux")

# we always use the Khronos reference headers
SET(OpenGL_INCLUDE_DIRS
${ramses-sdk_SOURCE_DIR}/external/khronos
)

# only check, if systems has GLESv3 headers, if yes we
# assume the system is GLESv3 enabled.
# we still use the included khronos GLESv3 headers.
FIND_PATH(GLESv3_INCLUDE_DIRS_IN_SYSROOT GLES3/gl3.h
/usr/include
)

# GL ES 3 is implemented in GLESv2 (in mesa)
FIND_LIBRARY(OpenGL_LIBRARIES
NAMES GLESv2
PATHS
)

IF(OpenGL_LIBRARIES AND GLESv3_INCLUDE_DIRS_IN_SYSROOT)
SET(OpenGL_FOUND TRUE)
ENDIF()

MARK_AS_ADVANCED(
OpenGL_INCLUDE_DIRS
OpenGL_LIBRARIES
)

ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Android")

# only check, if systems has GLESv3 headers, if yes we
# assume the system is GLESv3 enabled.
# we still use the included khronos GLESv3 headers.
FIND_PATH(OpenGL_INCLUDE_DIRS_IN_SYSROOT GLES3/gl3.h
/usr/include
)

FIND_LIBRARY(OpenGL_LIBRARIES
NAMES GLESv3
PATHS
)

IF(OpenGL_LIBRARIES AND OpenGL_INCLUDE_DIRS_IN_SYSROOT)
SET(OpenGL_FOUND TRUE)
ENDIF()

MARK_AS_ADVANCED(
OpenGL_INCLUDE_DIRS
OpenGL_LIBRARIES
)

ENDIF()
find_path(GLES3_INCLUDE_DIRS GLES3/gl3.h
PATHS
/usr/include
)

find_library(GLES3_LIBRARIES
NAMES GLESv3 GLESv2
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenGL DEFAULT_MSG GLES3_LIBRARIES GLES3_INCLUDE_DIRS)

if (OpenGL_FOUND)
add_library(OpenGL::GLES3 UNKNOWN IMPORTED)
set_target_properties(OpenGL::GLES3 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GLES3_INCLUDE_DIRS}"
IMPORTED_LOCATION "${GLES3_LIBRARIES}"
)

mark_as_advanced(
GLES3_INCLUDE_DIRS
GLES3_LIBRARIES
)
endif()
2 changes: 1 addition & 1 deletion cmake/ramses/platformConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ endif()
# gcc specific
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# optimize for debuggability
addFlags(RAMSES_DEBUG_FLAGS "-Og")
addFlags(RAMSES_DEBUG_FLAGS "-O0")

# remap GOT readonly after resolving
addFlags(RAMSES_C_CXX_FLAGS "-Wl,-z,relro,-z,now")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
# -------------------------------------------------------------------------
# Copyright (C) 2020 BMW AG
# Copyright (C) 2024 BMW AG
# -------------------------------------------------------------------------
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
# -------------------------------------------------------------------------

createModule(
NAME ramses-example-local-scene-referencing
TYPE BINARY
ENABLE_INSTALL ON
SRC_FILES src/*
DEPENDENCIES ramses-shared-lib
)
SET(CMAKE_C_COMPILER clang-15)
SET(CMAKE_CXX_COMPILER clang++-15)

SET(CMAKE_C_FLAGS "-m64 -fdiagnostics-color" CACHE STRING "")
SET(CMAKE_CXX_FLAGS "-m64 -fdiagnostics-color" CACHE STRING "")
13 changes: 13 additions & 0 deletions doc/sphinx/_static/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*
-------------------------------------------------------------------------
Copyright (C) 2024 BMW AG
-------------------------------------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
-------------------------------------------------------------------------
*/

.wy-nav-content {
max-width: none;
}
13 changes: 13 additions & 0 deletions doc/sphinx/_templates/layout.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!--
-------------------------------------------------------------------------
Copyright (C) 2023 BMW AG
-------------------------------------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
-------------------------------------------------------------------------
-->
{% extends "!layout.html" %}
{% block extrahead %}
<link href="{{ pathto("_static/style.css", True) }}" rel="stylesheet" type="text/css">
{% endblock %}
5 changes: 0 additions & 5 deletions doc/sphinx/build.rst
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,6 @@ Supported window types can be controlled with the cmake options below:

You can use the following options to disable some of the Ramses features:

* -Dramses-sdk_ENABLE_LOGIC
* options: ON/OFF
* default: ON
* Enables the logic subsystem of ramses alongside its dependencies (Lua, Sol, ...).

* -Dramses-sdk_TEXT_SUPPORT
* options: ON/OFF
* default: ON
Expand Down
6 changes: 0 additions & 6 deletions doc/sphinx/core.rst
Original file line number Diff line number Diff line change
Expand Up @@ -613,12 +613,6 @@ this in most cases means to render the scene(s) assigned to an offscreen buffer
the consumer scene using the contents of the offscreen buffer.


^^^^^^^^^^^^^^^^^^^^^^
ContentExpiration
^^^^^^^^^^^^^^^^^^^^^^

.. TODO
------------------------
The Daemon component
------------------------
Expand Down
6 changes: 6 additions & 0 deletions doc/sphinx/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ Ramses documentation

viewer

.. toctree::
:maxdepth: 3
:caption: Performance and Profiling

profiling

.. toctree::
:maxdepth: 3
:caption: Class Index
Expand Down
Loading

0 comments on commit cceef4f

Please sign in to comment.