Skip to content

Commit

Permalink
com.unity.recorder@2.6.0-exp.3
Browse files Browse the repository at this point in the history
## [2.6.0-exp.3] - 2021-02-19
### Added
 - Added support for recording accumulation in HDRP, for motion blur and path tracer.
  • Loading branch information
Unity Technologies committed Feb 19, 2021
1 parent f1ceb92 commit e75a646
Show file tree
Hide file tree
Showing 69 changed files with 2,135 additions and 85 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Expand Up @@ -4,13 +4,20 @@ All notable changes to this package will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [2.6.0-exp.3] - 2021-02-19
### Added
- Added support for recording accumulation in HDRP, for motion blur and path tracer.

## [2.5.4] - 2021-01-25
### Fixed
- Correctly update the absolute path when choosing a path with the folder picker in the Recorder Window.
- Removed a console error message displayed when the Recorder cannot find a custom Recorder icon.
- Fixed an exception that would occur when Recording with Unity 2021.2.
- Fixed a rounding error in the delta time when recording with non-integer frame rates.

### Added
- Integrated AOV Recorder into this package.

## [2.5.2] - 2020-12-16
### Fixed
- Fixed an issue where changing the active camera would be recorded one frame too late.
Expand Down
Binary file added Documentation~/Images/AOVRecorderWindow.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Documentation~/Images/AccumulationProperties.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Documentation~/Images/RecorderImage.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Documentation~/Images/RecorderMovie.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions Documentation~/InclCaptureOptionsAccumulation.md
@@ -0,0 +1,20 @@
Enable the **Accumulation** feature to [render multiple sub-frames](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@10.3/manual/Accumulation.html) and accumulate them on each final recorded frame. The two main purposes of this feature are:
* High frame rate capture to produce motion blur effect on fast moving elements.
* [Path tracing convergence](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@10.3/manual/Ray-Tracing-Path-Tracing.html) to reduce noise for improved image quality.

>[!NOTE]
>The use of the **Accumulation** feature is subject to very specific conditions:
>* Your project must use [HDRP (High Definition Render Pipeline)](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@latest).
>* You can only select **Game View** or **Targeted Camera** as the **Source** for the recording.
>* You can only use one active Recorder at a time when you capture accumulation.
>* You cannot enable the Accumulation feature through a Recorder Clip (in Timeline).
![](Images/AccumulationProperties.png)

|Property||Function|
|:---|:---|:---|
| **Samples** || The number of sub-frames to capture and accumulate between two subsequent frames. |
| **Shutter Interval** || The portion of the interval between two subsequent frames in which the Recorder actually applies the specified **Shutter Profile**.<br/><br/>• A value of 1 applies the shutter profile to the whole interval between the two frames.<br/>• A value of 0 disables the shutter and the accumulation.<br/>• Any value in between proportionally rescales the shutter profile and makes the shutter remain closed for the rest of the interval to the next frame. |
| **Shutter Profile** || Allows you to define a custom response profile that simulates the physical motion of a camera shutter at each frame when the Recorder captures the sub-frames. |
|| Range | Select this type to use a trapezoidal shutter profile.<br/>Specify two values to define the time range in which the shutter remains fully open.<br/><br/>• The values, between 0 and 1, are relative to the full length of the shutter profile.<br/>• The shutter opening and closing portions (from 0 to the first value, and from the second value to 1) are linear.|
|| Curve | Select this type to use an animation curve as the shutter profile.<br/>[Select or draw a curve](https://docs.unity3d.com/Manual/EditingCurves.html) according to your needs. |
5 changes: 5 additions & 0 deletions Documentation~/KnownIssues.md
Expand Up @@ -13,3 +13,8 @@ This page lists some known issues and limitations that you might experience with
**Limitation:** The Recorder currently supports only the recording of samples from the Unity built-in audio engine. As such, it cannot record audio from third-party audio engines such as FMOD Studio or Wwise.

**Workaround:** For a movie, you can record the third-party audio output in WAV format through another application, reimport this recorded file into the Unity Timeline, and then use the Unity Recorder to create the final movie with audio. Alternatively, you can use any video editing software to recompose audio and video.

### AOV Recorder limitations

* You can't select the Active Camera as the source of the recording.
* The AOV Recorder uses a linear gamma (instead of sRGB gamma curve) when recording in PNG and JPEG.
107 changes: 107 additions & 0 deletions Documentation~/RecorderAOV.md
@@ -0,0 +1,107 @@
# AOV Image Sequence Recorder properties

AOV recording is a process that extracts specific render pass data from the Scene that a specific Camera views. This mainly includes render passes related to the material, geometry, depth, motion, and lighting response of the GameObjects in the Scene.

The Unity AOV Recorder generates a sequence of image files in various formats including compressed HDR EXR and supports the recording of [multiple AOVs](#aov-to-export) for various [use cases](#use-case-examples).

This page covers all properties specific to the AOV Image Sequence Recorder type.

> **Note:** To fully configure any Recorder, you must also set the general recording properties according to the recording interface you are using: the [Recorder window](RecorderWindowRecordingProperties.md) or a [Recorder Clip](RecordingTimelineTrack.md#recorder-clip-properties).
![](Images/AOVRecorderWindow.png)

The AOV Recorder properties fall into three main categories:
* [Capture](#capture)
* [Format](#format)
* [Output File](#output-file)


## Capture

Use this section to define the source and the content of your recording. It includes settings to select the [AOV to export](#aov-to-export), select the [source camera](#source-camera) to use for the recording, and adjust other properties of the [recorded view](#recorded-view).

### AOV to Export

Select the type of AOV to record according to your needs.

**Tip:** Review the [list of use case examples](#use-case-examples) to get some more perspective and help you make your selection.

The following table describes for each one the type of data recorded in each frame and the meaning behind the value of a single pixel.

| AOV | Recorded data | Pixel value |
|:---|:---|:---|
| Beauty | The final rendered view (after post-process) without the alpha. | RGB color. |
| Albedo | The overall perceived colors of the objects in view, with no lighting calculation and no shadows. This includes data from albedo values or albedo maps of the object materials. | RGB color. |
| Normals | The normals of the surfaces in view, resulting from geometric normals and materials normal maps. | R, G and B channels:<br/>The values of the R,G,B channels respectively represent the X,Y,Z vector coordinates of the normals in World Space. |
| Smoothness | The glossiness or roughness of the surfaces in view. This includes data from smoothness values or smoothness maps of the object materials. | Grayscale:<br/>• Black (value of 0) = rough<br/>• White (value of 1) = glossy |
| Ambient Occlusion | The ambient occlusion data from the material maps of the objects in view. This does not include data resulting from any ambient occlusion effects. | Grayscale:<br/>• Black (value of 0) = fully occluded<br/>• White (value of 1) = not occluded |
| Metal | The metallic or non-metallic surfaces in view. This includes data from metal values or metal maps of the object materials. | Grayscale:<br/>• Black (value of 0) = non-metal<br/>• White (value of 1) = metal |
| Specular | The specular colors of the objects in view. This includes data from specular color values or specular color maps of the object materials. | RGB color. |
| Alpha | The transparency or opacity of the objects in view. This includes data from alpha values or alpha maps of the object materials. | Grayscale:<br/>• Black (value of 0) = transparent<br/>• White (value of 1) = opaque |
| Diffuse Lighting | The diffuse light response of the objects in view according to the current lighting of the Scene. It depends on the object materials and includes shadows. | RGB color. |
| Specular Lighting | The specular light response of the objects in view according to the current lighting of the Scene. It depends on the object materials and includes shadows. | RGB color. |
| Motion Vectors | The 2D vectors representing the relative movements of the objects, perceived from the recording Camera. | R and G channels only:<br/>• The values of the R and G channels respectively represent the horizontal and vertical coordinates of the vectors in the image plane.<br/>• The range of values is between -1 and 1, normalized to the **Output Resolution** you selected for the recording. |
| Depth | The relative distances of the objects in view between the Far Plane (farthest point from the camera) and the Near Plane (closest point to the camera). | Grayscale:<br/>• Black (value of 0) = at Far Plane<br/>• White (value of 1) = at Near Plane |

### Source camera

Select the camera to use for the recording.

| Property || Function |
|:---|:---|:---|
| **Camera** || Specifies which camera the Recorder uses to capture the AOV recording.|
| | Main Camera | The Camera tagged with the MainCamera [Tag](https://docs.unity3d.com/Manual/Tags.html). |
| | Tagged Camera | A camera tagged with a specific [Tag](https://docs.unity3d.com/Manual/Tags.html).<br/><br/>If you select this option, you must enter a value in the **Tag** field. |
|**Tag** | | Specifies which Camera Tag to look for when you set **Camera** to **Tagged Camera**. |

### Recorded view

Set the dimensions and other properties of the recorded view.

| Property || Function |
|:---|:---|:---|
| **Output Resolution** || Allows you to set the dimensions of the recorded view using different methods. |
| | Match Window Size | Matches the resolution and aspect ratio of the currently selected Game View. |
| | _[PRESET RESOLUTIONS]_ | Choose from several standard video resolutions such as FHD (1080p) and 4K (2160p).<br/><br/>The numeric value represents the image height. To set the image width, you must select a specific **Aspect Ratio**. |
| | Custom | Uses custom width and height values that you supply in the **W** and **H** fields. |
| **Aspect Ratio** || Specifies the ratio of width to height (w:h) of the recorded view when you set the **Output Resolution** to a preset resolution. |
| | _[PRESET ASPECT RATIOS]_ | Choose from several standard aspect ratios such as 16:9 (1.7778) and 4:3 (1.3333). |
| | Custom | Uses custom aspect ratio that you supply in the displayed fields (w:h). |
| **Flip Vertical** || When you enable this option, the Recorder flips the output image vertically.<br/><br/>This is useful to correct for systems that output video upside down. |


## Format

Use this section to set up the media format you need to save the recorded images in.

| Property | | Function |
|:---|:---|:---|
| **Format** | | The file encoding format.<br/><br/>Choose **PNG**, **JPEG**, or **EXR** ([OpenEXR](https://en.wikipedia.org/wiki/OpenEXR)). The Recorder encodes EXR in 16 bits. |
| **Color Space** | | The color space (gamma curve and gamut) to use in the output images. |
| | sRGB, sRGB | Uses sRGB curve and sRGB primaries. |
| | Linear, sRGB (unclamped) | Uses linear curve and sRGB primaries.<br/>This option is only available when you set the **Format** to **EXR**.<br/><br/>**Important:** To get the expected unclamped values in the output images, you must:<br/><br/>• Disable any Tonemapping post-processing effects in your Scene (menu: **Edit > Project Settings > HDRP Default Settings** and deselect **Tonemapping**) and in any Volume that includes a Tonemapping override (select the Volume, navigate in the Inspector and deselect **Tonemapping** if present).<br/><br/>• Disable **Dithering** on the Camera selected for the capture (in the Inspector, navigate to **General** and deselect **Dithering**). |
| **Compression** | | The compression method to apply when saving the data. <br/>This property is only available when you set the **Format** to **EXR**. |
| | None | Disables all compression. |
| | Zip | Applies deflate compression to blocks of 16 scanlines at a time.<br/>This is the default selection. |
| | RLE | Applies [Run-length encoding](https://en.wikipedia.org/wiki/Run-length_encoding) compression. |


## Output File

Use this section to specify the output **Path** and **File Name** pattern to save the recorded image files.

> **Note:** [Output File properties](OutputFileProperties.md) work the same for all types of recorders.
## Use case examples

You can record AOV render passes to finalize your look in post-processing or composite real-time 3D images with live action plates. For example:

* Render background plates in Unity and composite them with characters rendered offline, or with actors filmed against a green screen.

* Record Motion Vectors to apply motion blur in a separate compositing tool.

* Record Depth pass to apply depth of field in a separate compositing tool.

* Record Normal and Depth render passes in order to composite them for further re-lighting.

* Record Alpha and Depth render passes to isolate multiple alpha mattes according to the actual distances of objects in the Scene.
2 changes: 1 addition & 1 deletion Documentation~/RecorderAudio.md
Expand Up @@ -22,6 +22,6 @@ Use this section to set up the media format you need to save the recorded images

## Output File

Use this section to specify the output **Path** and **File Name** pattern to save the recorded animation clip.
Use this section to specify the output **Path** and **File Name** pattern to save the recorded audio file.

> **Note:** [Output File properties](OutputFileProperties.md) work the same for all types of recorders.
2 changes: 1 addition & 1 deletion Documentation~/RecorderGif.md
Expand Up @@ -46,6 +46,6 @@ Use this section to set up the media format you need to save the recorded images

## Output File

Use this section to specify the output **Path** and **File Name** pattern to save the recorded animation clip.
Use this section to specify the output **Path** and **File Name** pattern to save the recorded GIF file.

> **Note:** [Output File properties](OutputFileProperties.md) work the same for all types of recorders.
26 changes: 15 additions & 11 deletions Documentation~/RecorderImage.md
Expand Up @@ -20,28 +20,32 @@ Use this section to define the source and the content of your recording.
|Property||Function|
|:---|:---|:---|
| **Source** ||Specifies the input for the recording.|
|| Game View |Records frames rendered in the Game View.<br/><br/>Selecting this option displays the [Game View capture properties](#game-view). |
|| Targeted Camera |Records frames captured by a specific camera, even if the Game View does not use that camera.<br/><br/>Selecting this option displays the [Targeted Camera capture properties](#targeted-camera).|
|| 360 View |Records a 360-degree image sequence.<br/><br/>Selecting this option displays the [360 View capture properties](#360-view).|
|| Render Texture Asset |Records frames rendered in a Render Texture.<br/><br/>Selecting this option displays the [Render Texture Asset capture properties](#render-texture-asset).|
|| Texture Sampling |Supersamples the source camera during the capture to generate anti-aliased images in the recording.<br/><br/>Selecting this option displays the [Texture Sampling capture properties](#texture-sampling).|
|| Game View |Records frames rendered in the Game View.<br/><br/>Selecting this option displays the [Game View source properties](#game-view-source-properties). |
|| Targeted Camera |Records frames captured by a specific camera, even if the Game View does not use that camera.<br/><br/>Selecting this option displays the [Targeted Camera source properties](#targeted-camera-source-properties).|
|| 360 View |Records a 360-degree image sequence.<br/><br/>Selecting this option displays the [360 View source properties](#360-view-source-properties).|
|| Render Texture Asset |Records frames rendered in a Render Texture.<br/><br/>Selecting this option displays the [Render Texture Asset source properties](#render-texture-asset-source-properties).|
|| Texture Sampling |Supersamples the source camera during the capture to generate anti-aliased images in the recording.<br/><br/>Selecting this option displays the [Texture Sampling source properties](#texture-sampling-source-properties).|
| **Flip Vertical** ||When you enable this option, the Recorder flips the output image vertically.<br />This is useful to correct for systems that output video upside down.<br /><br />This option is not available when you record the Game View.|
| **Accumulation** || Enable this feature to render multiple sub-frames for accumulation purposes. See the [Accumulation properties](#accumulation-properties) for more details on this feature availability, use cases, and setup.<br /><br />**Note:** Enabling the **Accumulation** feature might considerably slow down your recording process as it involves a higher amount of rendering steps.|

### Game View
### Game View source properties
[!include[](InclCaptureOptionsGameview.md)]

### Targeted Camera
### Targeted Camera source properties
[!include[](InclCaptureOptionsTargetedCamera.md)]

### 360 View
### 360 View source properties
[!include[](InclCaptureOptions360View.md)]

### Render Texture Asset
### Render Texture Asset source properties
[!include[](InclCaptureOptionsRenderTextureAsset.md)]

### Texture Sampling
### Texture Sampling source properties
[!include[](InclCaptureOptionsTextureSampling.md)]

### Accumulation properties
[!include[](InclCaptureOptionsAccumulation.md)]

## Format

Use this section to set up the media format you need to save the recorded images in.
Expand All @@ -56,6 +60,6 @@ Use this section to set up the media format you need to save the recorded images

## Output File

Use this section to specify the output **Path** and **File Name** pattern to save the recorded animation clip.
Use this section to specify the output **Path** and **File Name** pattern to save the recorded image files.

> **Note:** [Output File properties](OutputFileProperties.md) work the same for all types of recorders.

0 comments on commit e75a646

Please sign in to comment.