*/}}
Forráskód Böngészése

some slog3 things

YimingWu 19 órája
szülő
commit
ac6bc06d1f
1 módosított fájl, 30 hozzáadás és 0 törlés
  1. 30 0
      ourshader.cpp

+ 30 - 0
ourshader.cpp

@@ -1079,6 +1079,36 @@ layout(std140) uniform CanvasPigmentBlock{
     PigmentData paper;
 }uCanvasPigment;
 
+#if 0 //s-log3 test
+
+float _LinearFromSLOG3(float input){
+    float outval;
+    if(input>=171.2102946929/1023.0){
+        outval = pow(10.0, ((input*1023.0-420.0)/261.5)) * (0.18 + 0.01) - 0.01;
+    }else{
+        outval = (input*1023.0-95.0) * 0.01125000 / (171.2102946929-95.0);
+    }
+    return outval/9.0;
+}
+vec3 LinearFromSLOG3(vec3 input){
+    return vec3(_LinearFromSLOG3(input.x),_LinearFromSLOG3(input.y),_LinearFromSLOG3(input.z));
+}
+float _LinearToSLOG3(float input){ input*=9.0;
+    float outval;
+    if(input>=0.01125000){
+        outval = (420.0 + log((input + 0.01)/(0.18 + 0.01))/log(10.0) * 261.5) / 1023.0;
+    }else{
+        outval = (input * (171.2102946929 - 95.0)/0.01125000 + 95.0) / 1023.0;
+    }
+    return outval;
+}
+vec3 LinearToSLOG3(vec3 input){
+    return vec3(_LinearToSLOG3(input.x),_LinearToSLOG3(input.y),_LinearToSLOG3(input.z));
+}
+
+#endif // if 0
+
+
 void main(){
     ivec2 iuv=ivec2(gl_FragCoord.xy)+frag_offset;
     //ivec2(fUV*vec2(display_size)); //int xof=iuv.x%2; int yof=iuv.y%2; iuv.x-=xof; iuv.y-=yof;