浏览代码

libobs: Reduce PQ shader math

jpark37 3 年之前
父节点
当前提交
0f53dc28bb
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      libobs/data/color.effect

+ 4 - 2
libobs/data/color.effect

@@ -46,7 +46,8 @@ float3 reinhard(float3 rgb)
 
 float linear_to_st2084_channel(float x)
 {
-	return pow((0.8359375 + 18.8515625 * pow(abs(x), 0.1593017578)) / (1. + 18.6875 * pow(abs(x), 0.1593017578)), 78.84375);
+	float common = pow(abs(x), 0.1593017578);
+	return pow((0.8359375 + 18.8515625 * common) / (1. + 18.6875 * common), 78.84375);
 }
 
 float3 linear_to_st2084(float3 rgb)
@@ -56,7 +57,8 @@ float3 linear_to_st2084(float3 rgb)
 
 float st2084_to_linear_channel(float u)
 {
-	return pow(abs(max(pow(abs(u), 1. / 78.84375) - 0.8359375, 0.) / (18.8515625 - 18.6875 * pow(abs(u), 1. / 78.84375))), 1. / 0.1593017578);
+	float common = pow(abs(u), 1. / 78.84375);
+	return pow(abs(max(common - 0.8359375, 0.) / (18.8515625 - 18.6875 * common)), 1. / 0.1593017578);
 }
 
 float3 st2084_to_linear(float3 v)