> ## Documentation Index
> Fetch the complete documentation index at: https://docs.liv.tv/llms.txt
> Use this file to discover all available pages before exploring further.

# Tablet Customization

> Customize the LIV Camera Kit tablet interface in Unity. Camera modes, quality config, tablet components, and higher quality capture rendering.

The LCK tablet is the user-facing interface for recording, streaming, and camera control. This page covers its architecture and how to customize it.

## Architecture overview

LCK manages standard Unity Camera components through three core MonoBehaviours:

**LckService** is the central entry point. It handles recording, streaming, audio, camera switching, and configuration. Access it via dependency injection:

```csharp theme={null}
[InjectLck] private ILckService _lckService;
```

**LckCamera** connects a standard Unity Camera component to the LCK capture system. Cameras are managed using string IDs, which avoids tight coupling across project hierarchies. Once activated, a camera immediately starts capturing.

**LckMonitor** provides access to the current active capture `RenderTexture` for display or further processing.

Since LCK builds directly on Unity's native cameras, all existing camera settings and rendering options remain available.

## Tablet interface

The tablet provides three camera modes:

**Selfie** -- front/back facing camera on the tablet. Settings: FOV (50--100), Smoothing (0--100), Flip (front/back), Follow.

**First-person** -- films from the player's HMD perspective. The camera transform uses the HMD Transform field in LCKCameraController (defaults to main camera). Settings: FOV (50--100), Smoothing (0--100).

**Third-person** -- tracks the user's head at a configurable distance. Settings: FOV (50--100), Smoothing (0--100), Distance (1--5), Flip (forward/behind).

Additional tablet controls include mute microphone with audio level display, flip aspect ratio (landscape/portrait), and record start/stop with duration display.

## Quality configuration

Quality presets are defined in the `LckQualityConfig` ScriptableObject. See [Recording](/unity/recording#quality-presets) for default values and how to create custom presets.

The quality selector button on the tablet lets users switch between SD/HD on Quest, and SD/HD/2K/4K on desktop.

## Higher quality capture rendering

If you want the capture to have higher visual quality than the in-game experience (for example, higher-detail player avatars), the recommended approach is **separate render layers**:

1. Create a higher-quality duplicate of the object.
2. Place it on a render layer visible only to LCK cameras.
3. Keep the original on a different layer for gameplay.

### Alternative: Command Buffers

```csharp theme={null}
camera.AddCommandBuffer(CameraEvent.BeforeForwardOpaque, myCommandBuffer);
```

This requires careful GPU-side handling and may involve custom shader work for skinned meshes.

### Alternative: URP Render Features

If using Universal Render Pipeline, implement a custom Render Feature to handle scaling at the pipeline level.

### What does not work

Direct pre/post render callbacks do not work because LCK rendering uses Unity's command buffer system, which executes asynchronously on the GPU. CPU-side mesh modifications will not sync reliably with capture frames.

## Camera switching

You can switch the active camera at any time, including during recording:

```csharp theme={null}
_lckService.SetActiveCamera("my-camera-id");
_lckService.SetActiveCamera("my-camera-id", "my-monitor-id");

// Get current camera
_lckService.GetActiveCamera(); // LckResult<ILckCamera>

// Listen for camera changes
_lckService.OnActiveCameraSet += (result) => { /* handle */ };
```

## Preview mode

Enable preview rendering without recording:

```csharp theme={null}
_lckService.SetPreviewActive(true);
```
