|
|
@@ -477,6 +477,19 @@ float3 PSPlanar420_Reverse(VertTexPos frag_in) : TARGET
|
|
|
return rgb;
|
|
|
}
|
|
|
|
|
|
+float4 PSPlanar420_PQ_Reverse(VertTexPos frag_in) : TARGET
|
|
|
+{
|
|
|
+ float y = image.Load(int3(frag_in.pos.xy, 0)).x;
|
|
|
+ int3 xy0_chroma = int3(frag_in.uv, 0);
|
|
|
+ float cb = image1.Load(xy0_chroma).x;
|
|
|
+ float cr = image2.Load(xy0_chroma).x;
|
|
|
+ float3 yuv = float3(y, cb, cr);
|
|
|
+ float3 pq = YUV_to_RGB(yuv);
|
|
|
+ float3 hdr2020 = st2084_to_linear(pq) * maximum_over_sdr_white_nits;
|
|
|
+ float3 rgb = rec2020_to_rec709(hdr2020);
|
|
|
+ return float4(rgb, 1.);
|
|
|
+}
|
|
|
+
|
|
|
float4 PSPlanar420A_Reverse(VertTexPos frag_in) : TARGET
|
|
|
{
|
|
|
int3 xy0_luma = int3(frag_in.pos.xy, 0);
|
|
|
@@ -511,7 +524,7 @@ float4 PSPlanar422_10LE_Reverse(FragPosWide frag_in) : TARGET
|
|
|
yuv *= 65535. / 1023.;
|
|
|
float3 rgb = YUV_to_RGB(yuv);
|
|
|
rgb = srgb_nonlinear_to_linear(rgb);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float4 PSPlanar422A_Reverse(FragPosWide frag_in) : TARGET
|
|
|
@@ -548,7 +561,7 @@ float4 PSPlanar444_12LE_Reverse(FragPos frag_in) : TARGET
|
|
|
yuv *= 65535. / 4095.;
|
|
|
float3 rgb = YUV_to_RGB(yuv);
|
|
|
rgb = srgb_nonlinear_to_linear(rgb);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float4 PSPlanar444A_Reverse(FragPos frag_in) : TARGET
|
|
|
@@ -603,7 +616,7 @@ float4 PSI010_SRGB_Reverse(VertTexPos frag_in) : TARGET
|
|
|
float3 yuv = float3(y, cb, cr);
|
|
|
float3 rgb = YUV_to_RGB(yuv);
|
|
|
rgb = srgb_nonlinear_to_linear(rgb);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float4 PSI010_PQ_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
@@ -617,7 +630,7 @@ float4 PSI010_PQ_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
float3 pq = YUV_to_RGB(yuv);
|
|
|
float3 hdr2020 = st2084_to_linear(pq) * maximum_over_sdr_white_nits;
|
|
|
float3 rgb = rec2020_to_rec709(hdr2020);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float4 PSI010_HLG_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
@@ -631,7 +644,7 @@ float4 PSI010_HLG_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
float3 hlg = YUV_to_RGB(yuv);
|
|
|
float3 hdr2020 = hlg_to_linear(hlg, hlg_exponent) * maximum_over_sdr_white_nits;
|
|
|
float3 rgb = rec2020_to_rec709(hdr2020);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float4 PSP010_SRGB_Reverse(VertTexPos frag_in) : TARGET
|
|
|
@@ -641,7 +654,7 @@ float4 PSP010_SRGB_Reverse(VertTexPos frag_in) : TARGET
|
|
|
float3 yuv = float3(y, cbcr);
|
|
|
float3 rgb = YUV_to_RGB(yuv);
|
|
|
rgb = srgb_nonlinear_to_linear(rgb);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float4 PSP010_PQ_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
@@ -652,7 +665,7 @@ float4 PSP010_PQ_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
float3 pq = YUV_to_RGB(yuv);
|
|
|
float3 hdr2020 = st2084_to_linear(pq) * maximum_over_sdr_white_nits;
|
|
|
float3 rgb = rec2020_to_rec709(hdr2020);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float4 PSP010_HLG_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
@@ -663,7 +676,7 @@ float4 PSP010_HLG_2020_709_Reverse(VertTexPos frag_in) : TARGET
|
|
|
float3 hlg = YUV_to_RGB(yuv);
|
|
|
float3 hdr2020 = hlg_to_linear(hlg, hlg_exponent) * maximum_over_sdr_white_nits;
|
|
|
float3 rgb = rec2020_to_rec709(hdr2020);
|
|
|
- return float4(rgb, 1.0);
|
|
|
+ return float4(rgb, 1.);
|
|
|
}
|
|
|
|
|
|
float3 PSY800_Limited(FragPos frag_in) : TARGET
|
|
|
@@ -943,6 +956,15 @@ technique I420_Reverse
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+technique I420_PQ_Reverse
|
|
|
+{
|
|
|
+ pass
|
|
|
+ {
|
|
|
+ vertex_shader = VSTexPosHalfHalf_Reverse(id);
|
|
|
+ pixel_shader = PSPlanar420_PQ_Reverse(frag_in);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
technique I40A_Reverse
|
|
|
{
|
|
|
pass
|