carboncopies / BrainGenix-ERS

BrainGenix Environment Rendering System (ERS) aims to be a high performance rendering system aimed towards scientific applications such as virtual body simulation. [Note: This project is currently in development].
https://braingenix.org/divisions/ers
GNU Affero General Public License v3.0
3 stars 1 forks source link

Build

Image

Feature List

Here's a (mostly) up to date list of the currently implemented features.

Editor Windows

Framerate Monitoring Tools

System Resource Monitoring Tools

Viewports

Scene Tree

System Log

Asset Explorer

Object Properties

Depending on the type of object selected, the window will display different properties:

Model Settings

- Casts Dynamic Shadows (Enable or disable casting of non-prebaked shadows)
- Casts Static Shadows (Enable or disable casting of prebaked shadows (doens't do anything yet; prebaked shadows dont exist yet))
- Receive Shadows (Allow or disallow the object to have shadows cast on it)
- Treat missing textures as transparent (useful for things with glass on them like clocks or windows, will fix broken textures caused on the glass)
- Render Model (show/hide this model)

- Minimum LOD (set the lower limit on the level of detail for this model)
- Maximum LOD (Set the upper limit on the level of detail for this model)

- Object specific shader (allows the user to set a different shader for this model only, picks from dropdown of shaders)

Point Light Settings

- Color picker (light color)
- Intensity (brightness)
- Maximum Distance this light will have an effect at
- Cast shadows (allow this light to cast shadows on objects)

Spot Light Settings

- Color picker (light color)
- Intensity (brightness)
- Maximum Distance this light will have an effect at
- Cutoff Angle (set the outer angle of light attenuation)
- Rolloff Angle (set the inner angle for light attenuation)
- Cast shadows (allow this light to cast shadows on objects)

Directional Light Settings

- Color picker (light color)
- Intensity (brightness)
- Maximum Distance this light will have an effect at
- Cast shadows (allow this light to cast shadows on objects)

Camera Settings

- Active Camera (determines what camera is the current active camera)
- FOV (Set field of view)
- Near Clip Plane (Set min distance for something to be visible)
- Far Clip Plane (Set max distance for something to be visible)
- Asset Streaming Priority (Set priority for this camera to get assets loaded)
- Enforce Aspect Ratio (forces the camera's aspect ratio to be used, will cause distortion or letterboxing)

Scripts

Script Editor

Shader Editor

Color Theme Selector

System Font Selector

Editor Camera Settings

Rendering Settings

Asset Streaming Settings

Game Controller Settings

Viewport Menu

Build Instructions (For Users)

Linux:

It's pretty easy to build on Linux and has been tested with Debian/Ubuntu distros to work. This is the primary development platform used, and therefore tends to work the best.

Simply enter the Tools directory and run sudo bash Setup.sh followed by bash Build.sh [number_of_threads]. The build command can be adjusted to fit the number of cpu cores that your system has by changing the argument. If you don't know how many CPU cores your system has, 4 is a good bet. If you have issues building (machine hanging/freezing or other memory related issues) try lowering this number. ERS can take a lot of memory to build, so make sure to lower the number of threads if needed.

If something isn't working quite right for you, you can try cleaning the build with bash Clean.sh.

If some packages are missing on your distro, you'll have to substitute with whatever your distro uses. We try to include as many packages in our codebase as possible via superbuilds, but this isn't always possible or practical.

Windows:

At this time, we're not working on native Windows builds since we are working on cross-compiling for Windows platforms from Linux. This will allow us to simplify our build infrastructure significantly. Therefore, the following section is out of date and may not work!

Since we don't develop on Windows, builds aren't guarenteed to work. With that said, they should work most of the time.

Note: Having windows set to a non english language seems to break C++ includes for some reason. We really wish that this wasn't an issue but it seems to be a problem for whatever reason (thanks Microsoft!). Apologies for the inconvenience.

Mac:

Development Environment Setup (For Developers)

Done! You've now successfully setup your build environment. At this point, just install or tweak things how you like and you're all set.

Keybinds

Editor Viewport

"[lmb]" - (When Hovering Gizmo) - Move Gizmo
"[left shift]" - (When Gizmo Active) - Move Camera While Moving Gizmo
"[esc]" - (When Gizmo Active) - Abort Current Movement
"[s]" - Set Gizmo To Scale
"[g]" - Set Gizmo To Translate
"[r]" - Set Gizmo To Rotate

"[lmb]" - (When Not Hovering Gizmo) - Enter Camera Movement Mode (hold button)
"[lmb] + [w]" - Move Camera Forward
"[lmb] + [a]" - Move Camera Left
"[lmb] + [s]" - Move Camera Backward
"[lmb] + [d]" - Move Camera Right
"[lmb] + [left shift]" - Move Camera Down
"[lmb] + [space]" - Move Camera Up

"[lmb] + [scroll wheel]" - Adjust Camera Movement

"[`]" - Toggle Viewport Controls On/Off

Scripting API

The ERS scripting api uses the Python programming language to provide control over models, lights and more. Scripts can be "attached" to an object to allow for programatic control over it's attributes. Plese see the following API reference for more information.

System Variables (provided to all scripts)

"GameTime" - Number of seconds since the start of the game.
"SystemTime" - Unix epoch as reported by the system.

Model Variables

"PosX" - X Position of the model
"PosY" - Y Position of the model
"PosZ" - Z Position of the model
"RotX" - X Rotation of the model
"RotY" - Y Rotation of the model
"RotZ" - Z Rotation of the model
"ScaleX" - X Scale of the model
"ScaleY" - Y Scale of the model
"ScaleZ" - Z Scale of the model
"Enabled" - Enable/Disable rendering of the model

Point Light Variables

"PosX" - X Position of the light
"PosY" - Y Position of the light
"PosZ" - Z Position of the light
"ColorR" - Red component of Color(from scale of 0 to 1)
"ColorG" - Green component of color (from scale of 0 to 1)
"ColorB" - Blue component of color (from scale of 0 to 1)
"Intensity" - brighness of the light (float)
"MaxDistance" - maximum distance of the light after which the scene will not be affected (float)
"RolloffConstant" - Constant component of light rolloff (float)
"RolloffLinear" - Linear component of light rolloff (float)
"RolloffQuadratic" - Quadratic component of light rolloff (float)

Directional Light Variables

"DirectionalLightPosX" - X Position of the light
"DirectionalLightPosY" - Y Position of the light
"DirectionalLightPosZ" - Z Position of the light
"DirectionalLightRotX" - X Rotation of the light
"DirectionalLightRotY" - Y Rotation of the light
"DirectionalLightRotZ" - Z Rotation of the light
"DirectionalLightIntensity" - brighness of the light (float)
"DirectionalLightMaxDistance" - maximum distance of the light after which the scene will not be affected (float)
"DirectionalLightColorR" - Red component of color (from scale of 0 to 1)
"DirectionalLightColorG" - Green component of color (from scale of 0 to 1)
"DirectionalLightColorB" - Blue component of color (from scale of 0 to 1)

Spot Light Variables

"PosX" - X Position of the light
"PosY" - Y Position of the light
"PosZ" - Z Position of the light
"RotX" - X Rotation of the light
"RotY" - Y Rotation of the light
"RotZ" - Z Rotation of the light
"ColorR" - Red component of color (from scale of 0 to 1)
"ColorG" - Green component of color (from scale of 0 to 1)
"ColorB" - Blue component of color (from scale of 0 to 1)
"Intensity" - brighness of the light (float)
"MaxDistance" - maximum distance of the light after which the scene will not be affected (float)
"Cutoff" - Angle of area affected in degrees (float)
"Rolloff" - Rolloff angle in degrees (float)

Camera Variables

"PosX" - X Position of the camera
"PosY" - Y Position of the camera
"PosZ" - Z Position of the camera
"RotX" - X Rotation of the camera
"RotY" - Y Rotation of the camera
"RotZ" - Z Rotation of the camera
"ScaleX" - X Scale of the camera
"ScaleY" - Y Scale of the camera
"ScaleZ" - Z Scale of the camera