Skip to content

Commit

Permalink
Camera updates (#499)
Browse files Browse the repository at this point in the history
* Misc info

* Update camera information

* Review fixes
  • Loading branch information
Jhonnyg authored Dec 10, 2024
1 parent ee88cf0 commit da04098
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 8 deletions.
20 changes: 19 additions & 1 deletion docs/en/manuals/camera.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,14 +132,32 @@ You can tell the render script to use the projection provided by the camera by s
msg.post("@render:", "use_camera_projection")
```

Alternatively, you can set a specific camera that should be used for rendering in a render script:
### Render script

Starting with Defold 1.9.6, when using the default render script Defold will automatically set the last enabled camera that should be used for rendering. Before this change, a script somewhere in the project needed to explicitly send the `use_camera_projection` message to the renderer to notify it that the view and projection from camera components should be used. This is no longer necesessary, but it is still possible to do so for backwards compatability purposes.

Alternatively, you can set a specific camera that should be used for rendering in a render script. This could be useful in cases where you need to control more specifically which camera should be used for rendering, for example in a multiplayer game.

```lua
-- render.set_camera will automatically use the view and projection matrices
-- for any rendering happening until render.set_camera() is called.
render.set_camera("main:/my_go#camera")
```

To check if a camera is active or not, you can use the `get_enabled` function from the [Camera API](https://defold.com/ref/alpha/camera/#camera.get_enabled:camera):

```lua
if camera.get_enabled("main:/my_go#camera") then
-- camera is enabled, use it for rendering!
render.set_camera("main:/my_go#camera")
end
```

::: sidenote
To use the `set_camera` function together with frustum culling, you need to pass this as an option to the function:
`render.set_camera("main:/my_go#camera", {use_frustum = true})`
:::

### Panning the camera

You pan/move the camera around the game world by moving the game object the camera component is attached to. The camera component will automatically send an updated view matrix based on the current x and y axis position of the camera.
Expand Down
2 changes: 1 addition & 1 deletion docs/en/manuals/project-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ The texture profiles file to use for this project, `/builtins/graphics/default.t
Verify the return value after each graphics call and report any errors in the log.

#### OpenGL Version Hint
OpenGL context version hint. If a specific version is selected, this will used as the minimum version required (does not apply to OpenGL ES). Defaults to OpenGL 3.3.
OpenGL context version hint. If a specific version is selected, this will be used as the minimum version required (does not apply to OpenGL ES). Defaults to OpenGL 3.3.

#### OpenGL Core Profile Hint
Set the 'core' OpenGL profile hint when creating the context. The core profile removes all deprecated features from OpenGL, such as immediate mode rendering. Does not apply to OpenGL ES. `true` by default.
Expand Down
7 changes: 1 addition & 6 deletions docs/en/manuals/render.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,7 @@ msg.post("@render:", "use_fixed_projection", { near = -1, far = 1, zoom = 2 })

### Camera projection

You can also use the projection provided by a [Camera component](/manuals/camera). You enable the camera projection by sending a message to the render script:

```lua
msg.post("@render:", "use_camera_projection")
```

When using the default render script and there are enabled [Camera components](/manuals/camera) available in the project, they will take precedence over any other view / projections set in the render script. To read more about how to work with camera components in render scripts, please consult the [Camera documentation](/manuals/camera).

## Frustum culling

Expand Down

0 comments on commit da04098

Please sign in to comment.