diff --git a/.gitignore b/.gitignore index 27ebdc9a..9288d387 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,6 @@ downloads~ # Ignore temporaries from GameCI **/[Aa]rtifacts/ **/[Cc]odeCoverage/ + +# Temp generated SDK version file +**/LiveKitSdkVersionInfo.txt \ No newline at end of file diff --git a/Resources.meta b/Resources.meta new file mode 100644 index 00000000..cac0fc94 --- /dev/null +++ b/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ee238a2ee670f4cd7bad98293b9e94fd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Shaders.meta b/Resources/Shaders.meta similarity index 100% rename from Runtime/Shaders.meta rename to Resources/Shaders.meta diff --git a/Runtime/Shaders/YuvToRgb.shader b/Resources/Shaders/YuvToRgb.shader similarity index 82% rename from Runtime/Shaders/YuvToRgb.shader rename to Resources/Shaders/YuvToRgb.shader index 1ef01af5..ae282fb0 100644 --- a/Runtime/Shaders/YuvToRgb.shader +++ b/Resources/Shaders/YuvToRgb.shader @@ -38,7 +38,7 @@ Shader "Hidden/LiveKit/YUV2RGB" inline half3 yuvToRgb709Limited(half y, half u, half v) { - // BT.709 limited range + // BT.709 limited range (Y: 16-235, UV: 16-240) half c = y - half(16.0 / 255.0); half d = u - half(128.0 / 255.0); half e = v - half(128.0 / 255.0); @@ -60,7 +60,11 @@ Shader "Hidden/LiveKit/YUV2RGB" half y = tex2D(_TexY, uv).r; half u = tex2D(_TexU, uv).r; half v = tex2D(_TexV, uv).r; - return half4(yuvToRgb709Limited(y, u, v), 1.0h); + half3 rgb = yuvToRgb709Limited(y, u, v); + // YUV→RGB produces sRGB/gamma values; convert to linear so the + // hardware's linear→sRGB write to the sRGB RT gives correct output. + rgb = GammaToLinearSpace(rgb); + return half4(rgb, 1.0h); } ENDHLSL } diff --git a/Runtime/Shaders/YuvToRgb.shader.meta b/Resources/Shaders/YuvToRgb.shader.meta similarity index 100% rename from Runtime/Shaders/YuvToRgb.shader.meta rename to Resources/Shaders/YuvToRgb.shader.meta diff --git a/Runtime/Scripts/Video/YuvToRgbConverter.cs b/Runtime/Scripts/Video/YuvToRgbConverter.cs index 32f9072b..9cded2b9 100644 --- a/Runtime/Scripts/Video/YuvToRgbConverter.cs +++ b/Runtime/Scripts/Video/YuvToRgbConverter.cs @@ -25,7 +25,7 @@ public bool EnsureOutput(int width, int height) Output.Release(); UnityEngine.Object.Destroy(Output); } - Output = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32); + Output = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB); Output.Create(); changed = true; } @@ -133,7 +133,9 @@ private void CpuConvertToRenderTarget(VideoFrameBuffer buffer, int width, int he { tempTex.LoadRawTextureData((IntPtr)rgba.Info.DataPtr, (int)rgba.GetMemorySize()); tempTex.Apply(); - Graphics.Blit(tempTex, Output); + + // Also mirror horizontally by flipping the UV scale on the X axis and offsetting. + Graphics.Blit(tempTex, Output, new Vector2(-1f, 1f), new Vector2(1f, 0f)); } finally { @@ -148,6 +150,7 @@ private void GpuConvertToRenderTarget() _yuvToRgbMaterial.SetTexture("_TexY", _planeY); _yuvToRgbMaterial.SetTexture("_TexU", _planeU); _yuvToRgbMaterial.SetTexture("_TexV", _planeV); + Graphics.Blit(Texture2D.blackTexture, Output, _yuvToRgbMaterial); } } diff --git a/Samples~/Meet/Assets/Resources/LiveKitSdkVersionInfo.txt b/Samples~/Meet/Assets/Resources/LiveKitSdkVersionInfo.txt deleted file mode 100644 index 785cda80..00000000 --- a/Samples~/Meet/Assets/Resources/LiveKitSdkVersionInfo.txt +++ /dev/null @@ -1 +0,0 @@ -1.3.3 \ No newline at end of file diff --git a/Samples~/Meet/Assets/Resources/Shaders.meta b/Samples~/Meet/Assets/Resources/Shaders.meta new file mode 100644 index 00000000..1826d635 --- /dev/null +++ b/Samples~/Meet/Assets/Resources/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfbb08de08ecc4679a09b6187e28f3df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Meet/Assets/Runtime/Utils/ResizeVideo/ResizeShader.shader b/Samples~/Meet/Assets/Resources/Shaders/ResizeShader.shader similarity index 100% rename from Samples~/Meet/Assets/Runtime/Utils/ResizeVideo/ResizeShader.shader rename to Samples~/Meet/Assets/Resources/Shaders/ResizeShader.shader diff --git a/Samples~/Meet/Assets/Runtime/Utils/ResizeVideo/ResizeShader.shader.meta b/Samples~/Meet/Assets/Resources/Shaders/ResizeShader.shader.meta similarity index 100% rename from Samples~/Meet/Assets/Runtime/Utils/ResizeVideo/ResizeShader.shader.meta rename to Samples~/Meet/Assets/Resources/Shaders/ResizeShader.shader.meta diff --git a/Samples~/Meet/ProjectSettings/GraphicsSettings.asset b/Samples~/Meet/ProjectSettings/GraphicsSettings.asset index d822b0f2..a9da4b15 100644 --- a/Samples~/Meet/ProjectSettings/GraphicsSettings.asset +++ b/Samples~/Meet/ProjectSettings/GraphicsSettings.asset @@ -34,7 +34,6 @@ GraphicsSettings: - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 4800000, guid: 2475752d0dcc74d1eb5e66b8317e87b6, type: 3} m_PreloadedShaders: [] m_PreloadShadersBatchTimeLimit: -1 m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}