@volter/blender-engine 0.1.126 → 0.1.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/blender-emscripten-engine.mts +32 -13
- package/browser/blender-engine.mts +2 -2
- package/browser/blender-wali-engine.mts +1 -1
- package/browser/protocol.ts +2 -0
- package/browser/runtime.ts +1 -1
- package/browser/session.py +65 -17
- package/browser/three/blender-display-NOTICE.txt +45 -0
- package/browser/three/blender-display-shaders.json +1 -0
- package/browser/three/blender-display-shaders.lut +0 -0
- package/browser/three/blender-display-transform.ts +139 -0
- package/browser/three/blender-graph-material.ts +34 -7
- package/browser/three/blender-node-graph.ts +15 -1
- package/browser/three/blender-object-info-materials.ts +75 -0
- package/browser/three/blender-physical-material.ts +13 -2
- package/browser/three/blender-runtime-armature.ts +1 -1
- package/browser/three/blender-runtime-lighting.ts +3 -1
- package/browser/three/blender-runtime-view.ts +16 -1
- package/browser/three/blender-single-scattering-sky.ts +128 -0
- package/browser/three/blender-sky.ts +19 -15
- package/browser/three/presenter.ts +8 -55
- package/browser/three/world-field-sampler.ts +2 -0
- package/browser/volter_three.py +4 -5
- package/browser/worker.ts +45 -12
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"2.5.0","config_sha256":"47a7d83e79c1d21f49ba6c505efe311da723471688c614b5c366e1da7eb8ea3a","source":"Blender 5.2 fbe6228777e7 config.ocio, libocio_display_processor.cc","processors":{"Standard/None":{"shader":"\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[]},"Filmic/None":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler2D blender_lut1d_1Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_1_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_1\n \n {\n outColor.r = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_1Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"Filmic/Very High Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler2D blender_lut1d_1Sampler;\nuniform sampler3D blender_lut3d_2Sampler;\nuniform sampler2D blender_lut1d_3Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_1_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 65535.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 17.;\n return retVal;\n}\nvec2 blender_lut1d_3_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_1\n \n {\n outColor.r = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.b)).r;\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.660000026, 0.660000026, 0.660000026, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_2\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_2Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_3\n \n {\n outColor.r = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_1Sampler","offset":464012,"count":69632,"linear":true,"width":4096,"height":17,"channels":1},{"sampler":"blender_lut1d_3Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3},{"sampler":"blender_lut3d_2Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"Filmic/High Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler2D blender_lut1d_1Sampler;\nuniform sampler3D blender_lut3d_2Sampler;\nuniform sampler2D blender_lut1d_3Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_1_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 65535.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 17.;\n return retVal;\n}\nvec2 blender_lut1d_3_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_1\n \n {\n outColor.r = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.b)).r;\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.660000026, 0.660000026, 0.660000026, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_2\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_2Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_3\n \n {\n outColor.r = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_1Sampler","offset":742540,"count":69632,"linear":true,"width":4096,"height":17,"channels":1},{"sampler":"blender_lut1d_3Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3},{"sampler":"blender_lut3d_2Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"Filmic/Medium High Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler2D blender_lut1d_1Sampler;\nuniform sampler3D blender_lut3d_2Sampler;\nuniform sampler2D blender_lut1d_3Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_1_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 65535.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 17.;\n return retVal;\n}\nvec2 blender_lut1d_3_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_1\n \n {\n outColor.r = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.b)).r;\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.660000026, 0.660000026, 0.660000026, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_2\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_2Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_3\n \n {\n outColor.r = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_1Sampler","offset":1021068,"count":69632,"linear":true,"width":4096,"height":17,"channels":1},{"sampler":"blender_lut1d_3Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3},{"sampler":"blender_lut3d_2Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"Filmic/Medium Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\nuniform sampler2D blender_lut1d_2Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_2_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_2\n \n {\n outColor.r = texture(blender_lut1d_2Sampler, blender_lut1d_2_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_2Sampler, blender_lut1d_2_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_2Sampler, blender_lut1d_2_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_2Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"Filmic/Medium Low Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler2D blender_lut1d_1Sampler;\nuniform sampler3D blender_lut3d_2Sampler;\nuniform sampler2D blender_lut1d_3Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_1_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 65535.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 17.;\n return retVal;\n}\nvec2 blender_lut1d_3_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_1\n \n {\n outColor.r = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.b)).r;\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.660000026, 0.660000026, 0.660000026, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_2\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_2Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_3\n \n {\n outColor.r = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_1Sampler","offset":1299596,"count":69632,"linear":true,"width":4096,"height":17,"channels":1},{"sampler":"blender_lut1d_3Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3},{"sampler":"blender_lut3d_2Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"Filmic/Low Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler2D blender_lut1d_1Sampler;\nuniform sampler3D blender_lut3d_2Sampler;\nuniform sampler2D blender_lut1d_3Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_1_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 65535.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 17.;\n return retVal;\n}\nvec2 blender_lut1d_3_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_1\n \n {\n outColor.r = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.b)).r;\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.660000026, 0.660000026, 0.660000026, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_2\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_2Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_3\n \n {\n outColor.r = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_1Sampler","offset":1578124,"count":69632,"linear":true,"width":4096,"height":17,"channels":1},{"sampler":"blender_lut1d_3Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3},{"sampler":"blender_lut3d_2Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"Filmic/Very Low Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler2D blender_lut1d_1Sampler;\nuniform sampler3D blender_lut3d_2Sampler;\nuniform sampler2D blender_lut1d_3Sampler;\n\n// Declaration of all helper methods\n\nvec2 blender_lut1d_1_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 65535.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 17.;\n return retVal;\n}\nvec2 blender_lut1d_3_computePos(float f)\n{\n float dep = clamp(f, 0.0, 1.0) * 4095.;\n vec2 retVal;\n retVal.y = floor(dep / 4095.);\n retVal.x = dep - retVal.y * 4095.;\n retVal.x = (retVal.x + 0.5) / 4096.;\n retVal.y = (retVal.y + 0.5) / 2.;\n return retVal;\n}\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0399999991, 0.0399999991, 0.0399999991, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_1\n \n {\n outColor.r = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_1Sampler, blender_lut1d_1_computePos(outColor.b)).r;\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.660000026, 0.660000026, 0.660000026, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_2\n \n {\n vec3 coords = outColor.rgb * vec3(32., 32., 32.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(33., 33., 33.);\n vec3 v1 = texture(blender_lut3d_2Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.0303030312);\n vec3 v4 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0303030312);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0., 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0303030312, 0., 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0303030312, 0.0303030312);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0303030312, 0.);\n vec3 v2 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0303030312, 0.0303030312, 0.);\n vec3 v3 = texture(blender_lut3d_2Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(1.5151515, 1.5151515, 1.5151515, 1.) * res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 1D processing for blender_lut1d_3\n \n {\n outColor.r = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.r)).r;\n outColor.g = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.g)).r;\n outColor.b = texture(blender_lut1d_3Sampler, blender_lut1d_3_computePos(outColor.b)).r;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut1d_1Sampler","offset":1856652,"count":69632,"linear":true,"width":4096,"height":17,"channels":1},{"sampler":"blender_lut1d_3Sampler","offset":0,"count":8192,"linear":true,"width":4096,"height":2,"channels":1},{"sampler":"blender_lut3d_0Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3},{"sampler":"blender_lut3d_2Sampler","offset":32768,"count":107811,"linear":false,"size":33,"channels":3}]},"AgX/None":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Punchy":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add GradingTone 'log' forward processing\n \n {\n const float blacksR = 1.;\n const float blacksG = 1.;\n const float blacksB = 1.;\n const float blacksM = 1.;\n const float blacksStart = 0.400000006;\n const float blacksWidth = 0.335000008;\n const float shadowsR = 0.200000003;\n const float shadowsG = 0.200000003;\n const float shadowsB = 0.200000003;\n const float shadowsM = 0.349999994;\n const float shadowsStart = 0.400000006;\n const float shadowsWidth = 0.100000001;\n const float midtonesR = 1.;\n const float midtonesG = 1.;\n const float midtonesB = 1.;\n const float midtonesM = 1.;\n const float midtonesStart = 0.400000006;\n const float midtonesWidth = 0.600000024;\n const float highlightsR = 1.;\n const float highlightsG = 1.;\n const float highlightsB = 1.;\n const float highlightsM = 1.;\n const float highlightsStart = 0.300000012;\n const float highlightsWidth = 1.;\n const float whitesR = 1.;\n const float whitesG = 1.;\n const float whitesB = 1.;\n const float whitesM = 1.;\n const float whitesStart = 0.400000006;\n const float whitesWidth = 0.5;\n const float sContrast = 1.;\n {\n const float halo = 0.4;\n float mid_adj = clamp(midtonesR, 0.01, 1.99);\n if (mid_adj != 1.)\n {\n const float x0 = 0.000000;\n const float x5 = 1.000000;\n const float max_width = (x5 - x0) * 0.95;\n float width = clamp(midtonesWidth, 0.01, max_width);\n float min_cent = x0 + width * 0.51;\n float max_cent = x5 - width * 0.51;\n float center = clamp(midtonesStart, min_cent, max_cent);\n float x1 = center - width * 0.5;\n float x4 = x1 + width;\n float x2 = x1 + (x4 - x1) * 0.25;\n float x3 = x1 + (x4 - x1) * 0.75;\n float y0 = x0;\n const float m0 = 1.;\n const float m5 = 1.;\n const float min_slope = 0.1;\n mid_adj = mid_adj - 1.;\n mid_adj = mid_adj * (1. - min_slope);\n float m2 = 1. + mid_adj;\n float m3 = 1. - mid_adj;\n float m1 = 1. + mid_adj * halo;\n float m4 = 1. - mid_adj * halo;\n if (center <= (x5 + x0) * 0.5)\n {\n float area = (x1 - x0) * (m1 - m0) * 0.5 + \n (x2 - x1) * ((m1 - m0) + (m2 - m1)*0.5) + (center - x2) * (m2 - m0) * 0.5;\n m4 = ( -0.5*(x5 - x4)*m5 + (x4 - x3) * (0.5*m3 - m5) + \n (x3 - center) * (m3 - m5) * 0.5 + area ) / ( -0.5*(x5 - x3) );\n }\n else\n {\n float area = (x5 - x4) * (m4 - m5) * 0.5 + \n (x4 - x3) * ((m4 - m5) + (m3 - m4) * 0.5) + (x3 - center) * (m3 - m5) * 0.5;\n m1 = ( -0.5*(x1 - x0)*m0 + (x2 - x1) * (0.5*m2 - m0) + \n (center - x2) * (m2 - m0) * 0.5 + area ) / ( -0.5*(x2 - x0) );\n }\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n float y2 = y1 + (m1 + m2) * (x2 - x1) * 0.5;\n float y3 = y2 + (m2 + m3) * (x3 - x2) * 0.5;\n float y4 = y3 + (m3 + m4) * (x4 - x3) * 0.5;\n float y5 = y4 + (m4 + m5) * (x5 - x4) * 0.5;\n float t = outColor.rgb.r;\n float tL = (t - x0) / (x1 - x0);\n float tM = (t - x1) / (x2 - x1);\n float tR = (t - x2) / (x3 - x2);\n float tR2 = (t - x3) / (x4 - x3);\n float tR3 = (t - x4) / (x5 - x4);\n float fL = tL * (x1 - x0) * ( tL * 0.5 * (m1 - m0) + m0 ) + y0;\n float fM = tM * (x2 - x1) * ( tM * 0.5 * (m2 - m1) + m1 ) + y1;\n float fR = tR * (x3 - x2) * ( tR * 0.5 * (m3 - m2) + m2 ) + y2;\n float fR2 = tR2 * (x4 - x3) * ( tR2 * 0.5 * (m4 - m3) + m3 ) + y3;\n float fR3 = tR3 * (x5 - x4) * ( tR3 * 0.5 * (m5 - m4) + m4 ) + y4;\n float res = (t < x1) ? fL : fM;\n if (t > x2) res = fR;\n if (t > x3) res = fR2;\n if (t > x4) res = fR3;\n if (t < x0) res = y0 + (t - x0) * m0;\n if (t > x5) res = y5 + (t - x5) * m5;\n outColor.rgb.r = res;\n }\n }\n {\n const float halo = 0.4;\n float mid_adj = clamp(midtonesG, 0.01, 1.99);\n if (mid_adj != 1.)\n {\n const float x0 = 0.000000;\n const float x5 = 1.000000;\n const float max_width = (x5 - x0) * 0.95;\n float width = clamp(midtonesWidth, 0.01, max_width);\n float min_cent = x0 + width * 0.51;\n float max_cent = x5 - width * 0.51;\n float center = clamp(midtonesStart, min_cent, max_cent);\n float x1 = center - width * 0.5;\n float x4 = x1 + width;\n float x2 = x1 + (x4 - x1) * 0.25;\n float x3 = x1 + (x4 - x1) * 0.75;\n float y0 = x0;\n const float m0 = 1.;\n const float m5 = 1.;\n const float min_slope = 0.1;\n mid_adj = mid_adj - 1.;\n mid_adj = mid_adj * (1. - min_slope);\n float m2 = 1. + mid_adj;\n float m3 = 1. - mid_adj;\n float m1 = 1. + mid_adj * halo;\n float m4 = 1. - mid_adj * halo;\n if (center <= (x5 + x0) * 0.5)\n {\n float area = (x1 - x0) * (m1 - m0) * 0.5 + \n (x2 - x1) * ((m1 - m0) + (m2 - m1)*0.5) + (center - x2) * (m2 - m0) * 0.5;\n m4 = ( -0.5*(x5 - x4)*m5 + (x4 - x3) * (0.5*m3 - m5) + \n (x3 - center) * (m3 - m5) * 0.5 + area ) / ( -0.5*(x5 - x3) );\n }\n else\n {\n float area = (x5 - x4) * (m4 - m5) * 0.5 + \n (x4 - x3) * ((m4 - m5) + (m3 - m4) * 0.5) + (x3 - center) * (m3 - m5) * 0.5;\n m1 = ( -0.5*(x1 - x0)*m0 + (x2 - x1) * (0.5*m2 - m0) + \n (center - x2) * (m2 - m0) * 0.5 + area ) / ( -0.5*(x2 - x0) );\n }\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n float y2 = y1 + (m1 + m2) * (x2 - x1) * 0.5;\n float y3 = y2 + (m2 + m3) * (x3 - x2) * 0.5;\n float y4 = y3 + (m3 + m4) * (x4 - x3) * 0.5;\n float y5 = y4 + (m4 + m5) * (x5 - x4) * 0.5;\n float t = outColor.rgb.g;\n float tL = (t - x0) / (x1 - x0);\n float tM = (t - x1) / (x2 - x1);\n float tR = (t - x2) / (x3 - x2);\n float tR2 = (t - x3) / (x4 - x3);\n float tR3 = (t - x4) / (x5 - x4);\n float fL = tL * (x1 - x0) * ( tL * 0.5 * (m1 - m0) + m0 ) + y0;\n float fM = tM * (x2 - x1) * ( tM * 0.5 * (m2 - m1) + m1 ) + y1;\n float fR = tR * (x3 - x2) * ( tR * 0.5 * (m3 - m2) + m2 ) + y2;\n float fR2 = tR2 * (x4 - x3) * ( tR2 * 0.5 * (m4 - m3) + m3 ) + y3;\n float fR3 = tR3 * (x5 - x4) * ( tR3 * 0.5 * (m5 - m4) + m4 ) + y4;\n float res = (t < x1) ? fL : fM;\n if (t > x2) res = fR;\n if (t > x3) res = fR2;\n if (t > x4) res = fR3;\n if (t < x0) res = y0 + (t - x0) * m0;\n if (t > x5) res = y5 + (t - x5) * m5;\n outColor.rgb.g = res;\n }\n }\n {\n const float halo = 0.4;\n float mid_adj = clamp(midtonesB, 0.01, 1.99);\n if (mid_adj != 1.)\n {\n const float x0 = 0.000000;\n const float x5 = 1.000000;\n const float max_width = (x5 - x0) * 0.95;\n float width = clamp(midtonesWidth, 0.01, max_width);\n float min_cent = x0 + width * 0.51;\n float max_cent = x5 - width * 0.51;\n float center = clamp(midtonesStart, min_cent, max_cent);\n float x1 = center - width * 0.5;\n float x4 = x1 + width;\n float x2 = x1 + (x4 - x1) * 0.25;\n float x3 = x1 + (x4 - x1) * 0.75;\n float y0 = x0;\n const float m0 = 1.;\n const float m5 = 1.;\n const float min_slope = 0.1;\n mid_adj = mid_adj - 1.;\n mid_adj = mid_adj * (1. - min_slope);\n float m2 = 1. + mid_adj;\n float m3 = 1. - mid_adj;\n float m1 = 1. + mid_adj * halo;\n float m4 = 1. - mid_adj * halo;\n if (center <= (x5 + x0) * 0.5)\n {\n float area = (x1 - x0) * (m1 - m0) * 0.5 + \n (x2 - x1) * ((m1 - m0) + (m2 - m1)*0.5) + (center - x2) * (m2 - m0) * 0.5;\n m4 = ( -0.5*(x5 - x4)*m5 + (x4 - x3) * (0.5*m3 - m5) + \n (x3 - center) * (m3 - m5) * 0.5 + area ) / ( -0.5*(x5 - x3) );\n }\n else\n {\n float area = (x5 - x4) * (m4 - m5) * 0.5 + \n (x4 - x3) * ((m4 - m5) + (m3 - m4) * 0.5) + (x3 - center) * (m3 - m5) * 0.5;\n m1 = ( -0.5*(x1 - x0)*m0 + (x2 - x1) * (0.5*m2 - m0) + \n (center - x2) * (m2 - m0) * 0.5 + area ) / ( -0.5*(x2 - x0) );\n }\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n float y2 = y1 + (m1 + m2) * (x2 - x1) * 0.5;\n float y3 = y2 + (m2 + m3) * (x3 - x2) * 0.5;\n float y4 = y3 + (m3 + m4) * (x4 - x3) * 0.5;\n float y5 = y4 + (m4 + m5) * (x5 - x4) * 0.5;\n float t = outColor.rgb.b;\n float tL = (t - x0) / (x1 - x0);\n float tM = (t - x1) / (x2 - x1);\n float tR = (t - x2) / (x3 - x2);\n float tR2 = (t - x3) / (x4 - x3);\n float tR3 = (t - x4) / (x5 - x4);\n float fL = tL * (x1 - x0) * ( tL * 0.5 * (m1 - m0) + m0 ) + y0;\n float fM = tM * (x2 - x1) * ( tM * 0.5 * (m2 - m1) + m1 ) + y1;\n float fR = tR * (x3 - x2) * ( tR * 0.5 * (m3 - m2) + m2 ) + y2;\n float fR2 = tR2 * (x4 - x3) * ( tR2 * 0.5 * (m4 - m3) + m3 ) + y3;\n float fR3 = tR3 * (x5 - x4) * ( tR3 * 0.5 * (m5 - m4) + m4 ) + y4;\n float res = (t < x1) ? fL : fM;\n if (t > x2) res = fR;\n if (t > x3) res = fR2;\n if (t > x4) res = fR3;\n if (t < x0) res = y0 + (t - x0) * m0;\n if (t > x5) res = y5 + (t - x5) * m5;\n outColor.rgb.b = res;\n }\n }\n {\n const float halo = 0.4;\n float mid_adj = clamp(midtonesM, 0.01, 1.99);\n if (mid_adj != 1.)\n {\n const float x0 = 0.000000;\n const float x5 = 1.000000;\n const float max_width = (x5 - x0) * 0.95;\n float width = clamp(midtonesWidth, 0.01, max_width);\n float min_cent = x0 + width * 0.51;\n float max_cent = x5 - width * 0.51;\n float center = clamp(midtonesStart, min_cent, max_cent);\n float x1 = center - width * 0.5;\n float x4 = x1 + width;\n float x2 = x1 + (x4 - x1) * 0.25;\n float x3 = x1 + (x4 - x1) * 0.75;\n float y0 = x0;\n const float m0 = 1.;\n const float m5 = 1.;\n const float min_slope = 0.1;\n mid_adj = mid_adj - 1.;\n mid_adj = mid_adj * (1. - min_slope);\n float m2 = 1. + mid_adj;\n float m3 = 1. - mid_adj;\n float m1 = 1. + mid_adj * halo;\n float m4 = 1. - mid_adj * halo;\n if (center <= (x5 + x0) * 0.5)\n {\n float area = (x1 - x0) * (m1 - m0) * 0.5 + \n (x2 - x1) * ((m1 - m0) + (m2 - m1)*0.5) + (center - x2) * (m2 - m0) * 0.5;\n m4 = ( -0.5*(x5 - x4)*m5 + (x4 - x3) * (0.5*m3 - m5) + \n (x3 - center) * (m3 - m5) * 0.5 + area ) / ( -0.5*(x5 - x3) );\n }\n else\n {\n float area = (x5 - x4) * (m4 - m5) * 0.5 + \n (x4 - x3) * ((m4 - m5) + (m3 - m4) * 0.5) + (x3 - center) * (m3 - m5) * 0.5;\n m1 = ( -0.5*(x1 - x0)*m0 + (x2 - x1) * (0.5*m2 - m0) + \n (center - x2) * (m2 - m0) * 0.5 + area ) / ( -0.5*(x2 - x0) );\n }\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n float y2 = y1 + (m1 + m2) * (x2 - x1) * 0.5;\n float y3 = y2 + (m2 + m3) * (x3 - x2) * 0.5;\n float y4 = y3 + (m3 + m4) * (x4 - x3) * 0.5;\n float y5 = y4 + (m4 + m5) * (x5 - x4) * 0.5;\n vec3 t = outColor.rgb;\n vec3 res;\n vec3 tL = (t - x0) / (x1 - x0);\n vec3 tM = (t - x1) / (x2 - x1);\n vec3 tR = (t - x2) / (x3 - x2);\n vec3 tR2 = (t - x3) / (x4 - x3);\n vec3 tR3 = (t - x4) / (x5 - x4);\n vec3 fL = tL * (x1 - x0) * ( tL * 0.5 * (m1 - m0) + m0 ) + y0;\n vec3 fM = tM * (x2 - x1) * ( tM * 0.5 * (m2 - m1) + m1 ) + y1;\n vec3 fR = tR * (x3 - x2) * ( tR * 0.5 * (m3 - m2) + m2 ) + y2;\n vec3 fR2 = tR2 * (x4 - x3) * ( tR2 * 0.5 * (m4 - m3) + m3 ) + y3;\n vec3 fR3 = tR3 * (x5 - x4) * ( tR3 * 0.5 * (m5 - m4) + m4 ) + y4;\n res.r = (t.r < x1) ? fL.r : fM.r;\n res.g = (t.g < x1) ? fL.g : fM.g;\n res.b = (t.b < x1) ? fL.b : fM.b;\n res.r = (t.r > x2) ? fR.r : res.r;\n res.g = (t.g > x2) ? fR.g : res.g;\n res.b = (t.b > x2) ? fR.b : res.b;\n res.r = (t.r > x3) ? fR2.r : res.r;\n res.g = (t.g > x3) ? fR2.g : res.g;\n res.b = (t.b > x3) ? fR2.b : res.b;\n res.r = (t.r > x4) ? fR3.r : res.r;\n res.g = (t.g > x4) ? fR3.g : res.g;\n res.b = (t.b > x4) ? fR3.b : res.b;\n res.r = (t.r < x0) ? y0 + (t.r - x0) * m0 : res.r;\n res.g = (t.g < x0) ? y0 + (t.g - x0) * m0 : res.g;\n res.b = (t.b < x0) ? y0 + (t.b - x0) * m0 : res.b;\n res.r = (t.r > x5) ? y5 + (t.r - x5) * m5 : res.r;\n res.g = (t.g > x5) ? y5 + (t.g - x5) * m5 : res.g;\n res.b = (t.b > x5) ? y5 + (t.b - x5) * m5 : res.b;\n outColor.rgb = res;\n }\n }\n {\n float x0 = highlightsStart;\n float x2 = highlightsWidth;\n float m0 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = highlightsR;\n val = 2. - val;\n if (val < 1.)\n {\n float m2 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.r;\n float res, tL, tR, fL, fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res = (t < x1) ? fL : fR;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x2) ? y2 + (t - x2) * m2 : res;\n outColor.rgb.r = res;\n }\n else if (val > 1.)\n {\n float m2 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.r;\n float res, cL, cR, discrimL, discrimR, outL, outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res = (t < y1) ? outL : outR;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y2) ? x2 + (t - y2) / m2 : res;\n outColor.rgb.r = res;\n }\n }\n {\n float x0 = highlightsStart;\n float x2 = highlightsWidth;\n float m0 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = highlightsG;\n val = 2. - val;\n if (val < 1.)\n {\n float m2 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.g;\n float res, tL, tR, fL, fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res = (t < x1) ? fL : fR;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x2) ? y2 + (t - x2) * m2 : res;\n outColor.rgb.g = res;\n }\n else if (val > 1.)\n {\n float m2 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.g;\n float res, cL, cR, discrimL, discrimR, outL, outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res = (t < y1) ? outL : outR;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y2) ? x2 + (t - y2) / m2 : res;\n outColor.rgb.g = res;\n }\n }\n {\n float x0 = highlightsStart;\n float x2 = highlightsWidth;\n float m0 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = highlightsB;\n val = 2. - val;\n if (val < 1.)\n {\n float m2 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.b;\n float res, tL, tR, fL, fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res = (t < x1) ? fL : fR;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x2) ? y2 + (t - x2) * m2 : res;\n outColor.rgb.b = res;\n }\n else if (val > 1.)\n {\n float m2 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.b;\n float res, cL, cR, discrimL, discrimR, outL, outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res = (t < y1) ? outL : outR;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y2) ? x2 + (t - y2) / m2 : res;\n outColor.rgb.b = res;\n }\n }\n {\n float x0 = highlightsStart;\n float x2 = highlightsWidth;\n float m0 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = highlightsM;\n val = 2. - val;\n if (val < 1.)\n {\n float m2 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n vec3 t = outColor.rgb;\n vec3 res;\n vec3 tL;\n vec3 tR;\n vec3 fL;\n vec3 fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res.r = (t.r < x1) ? fL.r : fR.r;\n res.g = (t.g < x1) ? fL.g : fR.g;\n res.b = (t.b < x1) ? fL.b : fR.b;\n res.r = (t.r < x0) ? y0 + (t.r - x0) * m0 : res.r;\n res.g = (t.g < x0) ? y0 + (t.g - x0) * m0 : res.g;\n res.b = (t.b < x0) ? y0 + (t.b - x0) * m0 : res.b;\n res.r = (t.r > x2) ? y2 + (t.r - x2) * m2 : res.r;\n res.g = (t.g > x2) ? y2 + (t.g - x2) * m2 : res.g;\n res.b = (t.b > x2) ? y2 + (t.b - x2) * m2 : res.b;\n outColor.rgb = res;\n }\n else if (val > 1.)\n {\n float m2 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n vec3 t = outColor.rgb;\n vec3 res;\n vec3 cL;\n vec3 cR;\n vec3 discrimL;\n vec3 discrimR;\n vec3 outL;\n vec3 outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res.r = (t.r < y1) ? outL.r : outR.r;\n res.g = (t.g < y1) ? outL.g : outR.g;\n res.b = (t.b < y1) ? outL.b : outR.b;\n res.r = (t.r < y0) ? x0 + (t.r - y0) / m0 : res.r;\n res.g = (t.g < y0) ? x0 + (t.g - y0) / m0 : res.g;\n res.b = (t.b < y0) ? x0 + (t.b - y0) / m0 : res.b;\n res.r = (t.r > y2) ? x2 + (t.r - y2) / m2 : res.r;\n res.g = (t.g > y2) ? x2 + (t.g - y2) / m2 : res.g;\n res.b = (t.b > y2) ? x2 + (t.b - y2) / m2 : res.b;\n outColor.rgb = res;\n }\n }\n {\n float x0 = whitesStart;\n float x1 = x0 + whitesWidth;\n const float m0 = 1.;\n float y0 = x0;\n float m1 = whitesR;\n float mtest = m1;\n float t = outColor.rgb.r;\n if (mtest < 1.)\n {\n m1 = max( 0.01, m1 );\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n float tlocal = (t - x0) / (x1 - x0);\n float res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x1) ? y1 + (t - x1) * m1 : res;\n outColor.rgb.r = res;\n }\n else if (mtest > 1.)\n {\n m1 = 2. - m1;\n m1 = max( 0.01, m1 );\n float gain = (m0 + m1) * 0.5;\n t = (t - x0) * gain + x0;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n float c = y0 - t;\n float discrim = sqrt( b * b - 4. * a * c );\n float tmp = ( -2. * c ) / ( discrim + b );\n float res = tmp * (x1 - x0) + x0;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (res - x0) / gain + x0;\n float new_y1 = (x1 - x0) / gain + x0;\n float xd = x0 + (x1 - x0) * 0.99;\n float md = m0 + (xd - x0) * (m1 - m0) / (x1 - x0);\n md = 1. / md;\n float aa = 0.5 * (1. / m1 - md) / (x1 - xd);\n float bb = 1. / m1 - 2. * aa * x1;\n float cc = new_y1 - bb * x1 - aa * x1 * x1;\n t = (t - x0) / gain + x0;\n if (t > x1) res = (aa * t + bb) * t + cc;\n outColor.rgb.r = res;\n }\n }\n {\n float x0 = whitesStart;\n float x1 = x0 + whitesWidth;\n const float m0 = 1.;\n float y0 = x0;\n float m1 = whitesG;\n float mtest = m1;\n float t = outColor.rgb.g;\n if (mtest < 1.)\n {\n m1 = max( 0.01, m1 );\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n float tlocal = (t - x0) / (x1 - x0);\n float res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x1) ? y1 + (t - x1) * m1 : res;\n outColor.rgb.g = res;\n }\n else if (mtest > 1.)\n {\n m1 = 2. - m1;\n m1 = max( 0.01, m1 );\n float gain = (m0 + m1) * 0.5;\n t = (t - x0) * gain + x0;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n float c = y0 - t;\n float discrim = sqrt( b * b - 4. * a * c );\n float tmp = ( -2. * c ) / ( discrim + b );\n float res = tmp * (x1 - x0) + x0;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (res - x0) / gain + x0;\n float new_y1 = (x1 - x0) / gain + x0;\n float xd = x0 + (x1 - x0) * 0.99;\n float md = m0 + (xd - x0) * (m1 - m0) / (x1 - x0);\n md = 1. / md;\n float aa = 0.5 * (1. / m1 - md) / (x1 - xd);\n float bb = 1. / m1 - 2. * aa * x1;\n float cc = new_y1 - bb * x1 - aa * x1 * x1;\n t = (t - x0) / gain + x0;\n if (t > x1) res = (aa * t + bb) * t + cc;\n outColor.rgb.g = res;\n }\n }\n {\n float x0 = whitesStart;\n float x1 = x0 + whitesWidth;\n const float m0 = 1.;\n float y0 = x0;\n float m1 = whitesB;\n float mtest = m1;\n float t = outColor.rgb.b;\n if (mtest < 1.)\n {\n m1 = max( 0.01, m1 );\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n float tlocal = (t - x0) / (x1 - x0);\n float res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x1) ? y1 + (t - x1) * m1 : res;\n outColor.rgb.b = res;\n }\n else if (mtest > 1.)\n {\n m1 = 2. - m1;\n m1 = max( 0.01, m1 );\n float gain = (m0 + m1) * 0.5;\n t = (t - x0) * gain + x0;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n float c = y0 - t;\n float discrim = sqrt( b * b - 4. * a * c );\n float tmp = ( -2. * c ) / ( discrim + b );\n float res = tmp * (x1 - x0) + x0;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (res - x0) / gain + x0;\n float new_y1 = (x1 - x0) / gain + x0;\n float xd = x0 + (x1 - x0) * 0.99;\n float md = m0 + (xd - x0) * (m1 - m0) / (x1 - x0);\n md = 1. / md;\n float aa = 0.5 * (1. / m1 - md) / (x1 - xd);\n float bb = 1. / m1 - 2. * aa * x1;\n float cc = new_y1 - bb * x1 - aa * x1 * x1;\n t = (t - x0) / gain + x0;\n if (t > x1) res = (aa * t + bb) * t + cc;\n outColor.rgb.b = res;\n }\n }\n {\n float x0 = whitesStart;\n float x1 = x0 + whitesWidth;\n const float m0 = 1.;\n float y0 = x0;\n float m1 = whitesM;\n float mtest = m1;\n vec3 t = outColor.rgb;\n if (mtest < 1.)\n {\n m1 = max( 0.01, m1 );\n float y1 = y0 + (m0 + m1) * (x1 - x0) * 0.5;\n vec3 tlocal = (t - x0) / (x1 - x0);\n vec3 res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res.r = (t.r < x0) ? y0 + (t.r - x0) * m0 : res.r;\n res.g = (t.g < x0) ? y0 + (t.g - x0) * m0 : res.g;\n res.b = (t.b < x0) ? y0 + (t.b - x0) * m0 : res.b;\n res.r = (t.r > x1) ? y1 + (t.r - x1) * m1 : res.r;\n res.g = (t.g > x1) ? y1 + (t.g - x1) * m1 : res.g;\n res.b = (t.b > x1) ? y1 + (t.b - x1) * m1 : res.b;\n outColor.rgb = res;\n }\n else if (mtest > 1.)\n {\n m1 = 2. - m1;\n m1 = max( 0.01, m1 );\n float gain = (m0 + m1) * 0.5;\n t = (t - x0) * gain + x0;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n vec3 c = y0 - t;\n vec3 discrim = sqrt( b * b - 4. * a * c );\n vec3 tmp = ( -2. * c ) / ( discrim + b );\n vec3 res = tmp * (x1 - x0) + x0;\n res.r = (t.r < y0) ? x0 + (t.r - y0) / m0 : res.r;\n res.g = (t.g < y0) ? x0 + (t.g - y0) / m0 : res.g;\n res.b = (t.b < y0) ? x0 + (t.b - y0) / m0 : res.b;\n res = (res - x0) / gain + x0;\n float new_y1 = (x1 - x0) / gain + x0;\n float xd = x0 + (x1 - x0) * 0.99;\n float md = m0 + (xd - x0) * (m1 - m0) / (x1 - x0);\n md = 1. / md;\n float aa = 0.5 * (1. / m1 - md) / (x1 - xd);\n float bb = 1. / m1 - 2. * aa * x1;\n float cc = new_y1 - bb * x1 - aa * x1 * x1;\n t = (t - x0) / gain + x0;\n if (t.r > x1) res.r = (aa * t.r + bb) * t.r + cc;\n if (t.g > x1) res.g = (aa * t.g + bb) * t.g + cc;\n if (t.b > x1) res.b = (aa * t.b + bb) * t.b + cc;\n outColor.rgb = res;\n }\n }\n {\n float x0 = shadowsWidth;\n float x2 = shadowsStart;\n float m2 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = shadowsR;\n if (val < 1.)\n {\n float m0 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.r;\n float res, tL, tR, fL, fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res = (t < x1) ? fL : fR;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x2) ? y2 + (t - x2) * m2 : res;\n outColor.rgb.r = res;\n }\n else if (val > 1.)\n {\n float m0 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.r;\n float res, cL, cR, discrimL, discrimR, outL, outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res = (t < y1) ? outL : outR;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y2) ? x2 + (t - y2) / m2 : res;\n outColor.rgb.r = res;\n }\n }\n {\n float x0 = shadowsWidth;\n float x2 = shadowsStart;\n float m2 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = shadowsG;\n if (val < 1.)\n {\n float m0 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.g;\n float res, tL, tR, fL, fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res = (t < x1) ? fL : fR;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x2) ? y2 + (t - x2) * m2 : res;\n outColor.rgb.g = res;\n }\n else if (val > 1.)\n {\n float m0 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.g;\n float res, cL, cR, discrimL, discrimR, outL, outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res = (t < y1) ? outL : outR;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y2) ? x2 + (t - y2) / m2 : res;\n outColor.rgb.g = res;\n }\n }\n {\n float x0 = shadowsWidth;\n float x2 = shadowsStart;\n float m2 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = shadowsB;\n if (val < 1.)\n {\n float m0 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.b;\n float res, tL, tR, fL, fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res = (t < x1) ? fL : fR;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x2) ? y2 + (t - x2) * m2 : res;\n outColor.rgb.b = res;\n }\n else if (val > 1.)\n {\n float m0 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n float t = outColor.rgb.b;\n float res, cL, cR, discrimL, discrimR, outL, outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res = (t < y1) ? outL : outR;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y2) ? x2 + (t - y2) / m2 : res;\n outColor.rgb.b = res;\n }\n }\n {\n float x0 = shadowsWidth;\n float x2 = shadowsStart;\n float m2 = 1.;\n float y0 = x0;\n float y2 = x2;\n float x1 = x0 + (x2 - x0) * 0.5;\n float val = shadowsM;\n if (val < 1.)\n {\n float m0 = max( 0.01, val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n vec3 t = outColor.rgb;\n vec3 res;\n vec3 tL;\n vec3 tR;\n vec3 fL;\n vec3 fR;\n tL = (t - x0) / (x1 - x0);\n tR = (t - x1) / (x2 - x1);\n fL = y0 * (1. - tL*tL) + y1 * tL*tL + m0 * (1. - tL) * tL * (x1 - x0);\n fR = y1 * (1. - tR)*(1. - tR) + y2 * (2. - tR)*tR + m2 * (tR - 1.)*tR * (x2 - x1);\n res.r = (t.r < x1) ? fL.r : fR.r;\n res.g = (t.g < x1) ? fL.g : fR.g;\n res.b = (t.b < x1) ? fL.b : fR.b;\n res.r = (t.r < x0) ? y0 + (t.r - x0) * m0 : res.r;\n res.g = (t.g < x0) ? y0 + (t.g - x0) * m0 : res.g;\n res.b = (t.b < x0) ? y0 + (t.b - x0) * m0 : res.b;\n res.r = (t.r > x2) ? y2 + (t.r - x2) * m2 : res.r;\n res.g = (t.g > x2) ? y2 + (t.g - x2) * m2 : res.g;\n res.b = (t.b > x2) ? y2 + (t.b - x2) * m2 : res.b;\n outColor.rgb = res;\n }\n else if (val > 1.)\n {\n float m0 = max( 0.01, 2. - val );\n float y1 = ( 0.5 / (x2 - x0) ) * ( (2.*y0 + m0 * (x1 - x0)) * (x2 - x1) + (2.*y2 - m2 * (x2 - x1)) * (x1 - x0) );\n vec3 t = outColor.rgb;\n vec3 res;\n vec3 cL;\n vec3 cR;\n vec3 discrimL;\n vec3 discrimR;\n vec3 outL;\n vec3 outR;\n cL = y0 - t;\n float bL = m0 * (x1 - x0);\n float aL = y1 - y0 - m0 * (x1 - x0);\n discrimL = sqrt( bL * bL - 4. * aL * cL );\n outL = (-2. * cL) / ( discrimL + bL ) * (x1 - x0) + x0;\n cR = y1 - t;\n float bR = 2.*y2 - 2.*y1 - m2 * (x2 - x1);\n float aR = y1 - y2 + m2 * (x2 - x1);\n discrimR = sqrt( bR * bR - 4. * aR * cR );\n outR = (-2. * cR) / ( discrimR + bR ) * (x2 - x1) + x1;\n res.r = (t.r < y1) ? outL.r : outR.r;\n res.g = (t.g < y1) ? outL.g : outR.g;\n res.b = (t.b < y1) ? outL.b : outR.b;\n res.r = (t.r < y0) ? x0 + (t.r - y0) / m0 : res.r;\n res.g = (t.g < y0) ? x0 + (t.g - y0) / m0 : res.g;\n res.b = (t.b < y0) ? x0 + (t.b - y0) / m0 : res.b;\n res.r = (t.r > y2) ? x2 + (t.r - y2) / m2 : res.r;\n res.g = (t.g > y2) ? x2 + (t.g - y2) / m2 : res.g;\n res.b = (t.b > y2) ? x2 + (t.b - y2) / m2 : res.b;\n outColor.rgb = res;\n }\n }\n {\n float x1 = blacksStart;\n float x0 = x1 - blacksWidth;\n const float m1 = 1.;\n float y1 = x1;\n float m0 = blacksR;\n m0 = 2. - m0;\n float mtest = m0;\n float t = outColor.rgb.r;\n if (mtest < 1.)\n {\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n float tlocal = (t - x0) / (x1 - x0);\n float res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x1) ? y1 + (t - x1) * m1 : res;\n outColor.rgb.r = res;\n }\n else if (mtest > 1.)\n {\n m0 = 2. - m0;\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n float gain = (m0 + m1) * 0.5;\n t = (t - x1) * gain + x1;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n float c = y0 - t;\n float discrim = sqrt( b * b - 4. * a * c );\n float tmp = ( -2. * c ) / ( discrim + b );\n float res = tmp * (x1 - x0) + x0;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y1) ? x1 + (t - y1) / m1 : res;\n res = (res - x1) / gain + x1;\n outColor.rgb.r = res;\n }\n }\n {\n float x1 = blacksStart;\n float x0 = x1 - blacksWidth;\n const float m1 = 1.;\n float y1 = x1;\n float m0 = blacksG;\n m0 = 2. - m0;\n float mtest = m0;\n float t = outColor.rgb.g;\n if (mtest < 1.)\n {\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n float tlocal = (t - x0) / (x1 - x0);\n float res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x1) ? y1 + (t - x1) * m1 : res;\n outColor.rgb.g = res;\n }\n else if (mtest > 1.)\n {\n m0 = 2. - m0;\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n float gain = (m0 + m1) * 0.5;\n t = (t - x1) * gain + x1;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n float c = y0 - t;\n float discrim = sqrt( b * b - 4. * a * c );\n float tmp = ( -2. * c ) / ( discrim + b );\n float res = tmp * (x1 - x0) + x0;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y1) ? x1 + (t - y1) / m1 : res;\n res = (res - x1) / gain + x1;\n outColor.rgb.g = res;\n }\n }\n {\n float x1 = blacksStart;\n float x0 = x1 - blacksWidth;\n const float m1 = 1.;\n float y1 = x1;\n float m0 = blacksB;\n m0 = 2. - m0;\n float mtest = m0;\n float t = outColor.rgb.b;\n if (mtest < 1.)\n {\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n float tlocal = (t - x0) / (x1 - x0);\n float res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res = (t < x0) ? y0 + (t - x0) * m0 : res;\n res = (t > x1) ? y1 + (t - x1) * m1 : res;\n outColor.rgb.b = res;\n }\n else if (mtest > 1.)\n {\n m0 = 2. - m0;\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n float gain = (m0 + m1) * 0.5;\n t = (t - x1) * gain + x1;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n float c = y0 - t;\n float discrim = sqrt( b * b - 4. * a * c );\n float tmp = ( -2. * c ) / ( discrim + b );\n float res = tmp * (x1 - x0) + x0;\n res = (t < y0) ? x0 + (t - y0) / m0 : res;\n res = (t > y1) ? x1 + (t - y1) / m1 : res;\n res = (res - x1) / gain + x1;\n outColor.rgb.b = res;\n }\n }\n {\n float x1 = blacksStart;\n float x0 = x1 - blacksWidth;\n const float m1 = 1.;\n float y1 = x1;\n float m0 = blacksM;\n m0 = 2. - m0;\n float mtest = m0;\n vec3 t = outColor.rgb;\n if (mtest < 1.)\n {\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n vec3 tlocal = (t - x0) / (x1 - x0);\n vec3 res = tlocal * (x1 - x0) * ( tlocal * 0.5 * (m1 - m0) + m0 ) + y0;\n res.r = (t.r < x0) ? y0 + (t.r - x0) * m0 : res.r;\n res.g = (t.g < x0) ? y0 + (t.g - x0) * m0 : res.g;\n res.b = (t.b < x0) ? y0 + (t.b - x0) * m0 : res.b;\n res.r = (t.r > x1) ? y1 + (t.r - x1) * m1 : res.r;\n res.g = (t.g > x1) ? y1 + (t.g - x1) * m1 : res.g;\n res.b = (t.b > x1) ? y1 + (t.b - x1) * m1 : res.b;\n outColor.rgb = res;\n }\n else if (mtest > 1.)\n {\n m0 = 2. - m0;\n m0 = max( 0.01, m0 );\n float y0 = y1 - (m0 + m1) * (x1 - x0) * 0.5;\n float gain = (m0 + m1) * 0.5;\n t = (t - x1) * gain + x1;\n float a = 0.5 * (m1 - m0) * (x1 - x0);\n float b = m0 * (x1 - x0);\n vec3 c = y0 - t;\n vec3 discrim = sqrt( b * b - 4. * a * c );\n vec3 tmp = ( -2. * c ) / ( discrim + b );\n vec3 res = tmp * (x1 - x0) + x0;\n res.r = (t.r < y0) ? x0 + (t.r - y0) / m0 : res.r;\n res.g = (t.g < y0) ? x0 + (t.g - y0) / m0 : res.g;\n res.b = (t.b < y0) ? x0 + (t.b - y0) / m0 : res.b;\n res.r = (t.r > y1) ? x1 + (t.r - y1) / m1 : res.r;\n res.g = (t.g > y1) ? x1 + (t.g - y1) / m1 : res.g;\n res.b = (t.b > y1) ? x1 + (t.b - y1) / m1 : res.b;\n res = (res - x1) / gain + x1;\n outColor.rgb = res;\n }\n }\n float contrast = sContrast;\n if (contrast != 1.)\n {\n contrast = (contrast > 1.) ? 1. / (1.8125 - 0.8125 * min( contrast, 1.99 )) : 0.28125 + 0.71875 * max( contrast, 0.01 );\n const float pivot = 0.400000;\n vec3 t = outColor.rgb;\n {\n const float x3 = 1.000000;\n const float y3 = 1.000000;\n const float y0 = pivot + (y3 - pivot) * 0.25;\n float m0 = contrast;\n float x0 = pivot + (y0 - pivot) / m0;\n float min_width = (x3 - x0) * 0.3;\n float m3 = 1. / m0;\n float center = (y3 - y0 - m3*x3 + m0*x0) / (m0 - m3);\n float x1 = x0;\n float x2 = 2. * center - x1;\n if (x2 > x3)\n {\n x2 = x3;\n x1 = 2. * center - x2;\n }\n else if ((x2 - x1) < min_width)\n {\n x2 = x1 + min_width;\n float new_center = (x2 + x1) * 0.5;\n m3 = (y3 - y0 + m0*x0 - new_center * m0) / (x3 - new_center);\n }\n float y1 = y0;\n float y2 = y1 + (m0 + m3) * (x2 - x1) * 0.5;\n outColor.rgb = (t - pivot) * contrast + pivot;\n vec3 tR = (t - x1) / (x2 - x1);\n vec3 res = tR * (x2 - x1) * ( tR * 0.5 * (m3 - m0) + m0 ) + y1;\n outColor.rgb.r = (t.r > x1) ? res.r : outColor.rgb.r;\n outColor.rgb.g = (t.g > x1) ? res.g : outColor.rgb.g;\n outColor.rgb.b = (t.b > x1) ? res.b : outColor.rgb.b;\n outColor.rgb.r = (t.r > x2) ? y2 + (t.r - x2) * m3 : outColor.rgb.r;\n outColor.rgb.g = (t.g > x2) ? y2 + (t.g - x2) * m3 : outColor.rgb.g;\n outColor.rgb.b = (t.b > x2) ? y2 + (t.b - x2) * m3 : outColor.rgb.b;\n }\n {\n const float x0 = 0.000000;\n const float y0 = 0.000000;\n const float y3 = pivot - (pivot - y0) * 0.25;\n float m3 = contrast;\n float x3 = pivot - (pivot - y3) / m3;\n float min_width = (x3 - x0) * 0.3;\n float m0 = 1. / m3;\n float center = (y3 - y0 - m3*x3 + m0*x0) / (m0 - m3);\n float x2 = x3;\n float x1 = 2. * center - x2;\n if (x1 < x0)\n {\n x1 = x0;\n x2 = 2. * center - x1;\n }\n else if ((x2 - x1) < min_width)\n {\n x1 = x2 - min_width;\n float new_center = (x2 + x1) * 0.5;\n m0 = (y3 - y0 - m3*x3 + new_center * m3) / (new_center - x0);\n }\n float y2 = y3;\n float y1 = y2 - (m0 + m3) * (x2 - x1) * 0.5;\n vec3 tR = (t - x1) / (x2 - x1);\n vec3 res = tR * (x2 - x1) * ( tR * 0.5 * (m3 - m0) + m0 ) + y1;\n outColor.rgb.r = (t.r < x2) ? res.r : outColor.rgb.r;\n outColor.rgb.g = (t.g < x2) ? res.g : outColor.rgb.g;\n outColor.rgb.b = (t.b < x2) ? res.b : outColor.rgb.b;\n outColor.rgb.r = (t.r < x1) ? y1 + (t.r - x1) * m0 : outColor.rgb.r;\n outColor.rgb.g = (t.g < x1) ? y1 + (t.g - x1) * m0 : outColor.rgb.g;\n outColor.rgb.b = (t.b < x1) ? y1 + (t.b - x1) * m0 : outColor.rgb.b;\n }\n }\n outColor = min( outColor, 65504. );\n }\n \n // Add CDL 'FwdNoClamp' processing\n \n {\n vec3 lumaWeights = vec3(0.212599993, 0.715200007, 0.0722000003);\n vec3 slope = vec3(1., 1., 1.);\n vec3 offset = vec3(0., 0., 0.);\n vec3 power = vec3(1.09119999, 1.09119999, 1.09119999);\n float saturation = 1.;\n outColor.rgb = outColor.rgb * slope;\n outColor.rgb = outColor.rgb + offset;\n vec3 posPix = step(0.0, outColor.rgb);\n vec3 pixPower = pow(abs(outColor.rgb), power);\n outColor.rgb = mix(outColor.rgb, pixPower, posPix);\n float luma = dot(outColor.rgb, lumaWeights);\n outColor.rgb = luma + saturation * (outColor.rgb - luma);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Greyscale":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Range processing\n \n {\n outColor.rgb = max(vec3(0., 0., 0.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.25892353556898479, 0.25892353556898479, 0.25892353556898479, 0., 0.61049853460665249, 0.61049853460665249, 0.61049853460665249, 0., 0.13057792982436284, 0.13057792982436284, 0.13057792982436284, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Range processing\n \n {\n outColor.rgb = max(vec3(0., 0., 0.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Very High Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add GradingPrimary 'log' forward processing\n \n {\n vec3 brightness = vec3(0., 0., 0.);\n vec3 contrast = vec3(1.57000005, 1.57000005, 1.57000005);\n vec3 gamma = vec3(1., 1., 1.);\n const float pivot = 0.400000006;\n const float pivotBlack = 0.;\n const float pivotWhite = 1.;\n const float clampBlack = -3.40282347e+38;\n const float clampWhite = 3.40282347e+38;\n const float saturation = 0.899999976;\n outColor.rgb += brightness;\n outColor.rgb = ( outColor.rgb - pivot ) * contrast + pivot;\n if ( gamma != vec3(1., 1., 1.) )\n {\n vec3 normalizedOut = abs(outColor.rgb - pivotBlack) / (pivotWhite - pivotBlack);\n vec3 scale = sign(outColor.rgb - pivotBlack) * (pivotWhite - pivotBlack);\n outColor.rgb = pow( normalizedOut, gamma ) * scale + pivotBlack;\n }\n vec3 lumaWgts = vec3(0.212599993, 0.715200007, 0.0722000003);\n float luma = dot( outColor.rgb, lumaWgts );\n outColor.rgb = luma + saturation * (outColor.rgb - luma);\n outColor.rgb = clamp( outColor.rgb, clampBlack, clampWhite );\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - High Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add GradingPrimary 'log' forward processing\n \n {\n vec3 brightness = vec3(0., 0., 0.);\n vec3 contrast = vec3(1.39999998, 1.39999998, 1.39999998);\n vec3 gamma = vec3(1., 1., 1.);\n const float pivot = 0.400000006;\n const float pivotBlack = 0.;\n const float pivotWhite = 1.;\n const float clampBlack = -3.40282347e+38;\n const float clampWhite = 3.40282347e+38;\n const float saturation = 0.949999988;\n outColor.rgb += brightness;\n outColor.rgb = ( outColor.rgb - pivot ) * contrast + pivot;\n if ( gamma != vec3(1., 1., 1.) )\n {\n vec3 normalizedOut = abs(outColor.rgb - pivotBlack) / (pivotWhite - pivotBlack);\n vec3 scale = sign(outColor.rgb - pivotBlack) * (pivotWhite - pivotBlack);\n outColor.rgb = pow( normalizedOut, gamma ) * scale + pivotBlack;\n }\n vec3 lumaWgts = vec3(0.212599993, 0.715200007, 0.0722000003);\n float luma = dot( outColor.rgb, lumaWgts );\n outColor.rgb = luma + saturation * (outColor.rgb - luma);\n outColor.rgb = clamp( outColor.rgb, clampBlack, clampWhite );\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Medium High Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add GradingPrimary 'log' forward processing\n \n {\n vec3 brightness = vec3(0., 0., 0.);\n vec3 contrast = vec3(1.20000005, 1.20000005, 1.20000005);\n vec3 gamma = vec3(1., 1., 1.);\n const float pivot = 0.400000006;\n const float pivotBlack = 0.;\n const float pivotWhite = 1.;\n const float clampBlack = -3.40282347e+38;\n const float clampWhite = 3.40282347e+38;\n const float saturation = 1.;\n outColor.rgb += brightness;\n outColor.rgb = ( outColor.rgb - pivot ) * contrast + pivot;\n if ( gamma != vec3(1., 1., 1.) )\n {\n vec3 normalizedOut = abs(outColor.rgb - pivotBlack) / (pivotWhite - pivotBlack);\n vec3 scale = sign(outColor.rgb - pivotBlack) * (pivotWhite - pivotBlack);\n outColor.rgb = pow( normalizedOut, gamma ) * scale + pivotBlack;\n }\n vec3 lumaWgts = vec3(0.212599993, 0.715200007, 0.0722000003);\n float luma = dot( outColor.rgb, lumaWgts );\n outColor.rgb = luma + saturation * (outColor.rgb - luma);\n outColor.rgb = clamp( outColor.rgb, clampBlack, clampWhite );\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Base Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Range processing\n \n {\n outColor.rgb = max(vec3(0., 0., 0.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Medium Low Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add GradingPrimary 'log' forward processing\n \n {\n vec3 brightness = vec3(0., 0., 0.);\n vec3 contrast = vec3(0.899999976, 0.899999976, 0.899999976);\n vec3 gamma = vec3(1., 1., 1.);\n const float pivot = 0.400000006;\n const float pivotBlack = 0.;\n const float pivotWhite = 1.;\n const float clampBlack = -3.40282347e+38;\n const float clampWhite = 3.40282347e+38;\n const float saturation = 1.04999995;\n outColor.rgb += brightness;\n outColor.rgb = ( outColor.rgb - pivot ) * contrast + pivot;\n if ( gamma != vec3(1., 1., 1.) )\n {\n vec3 normalizedOut = abs(outColor.rgb - pivotBlack) / (pivotWhite - pivotBlack);\n vec3 scale = sign(outColor.rgb - pivotBlack) * (pivotWhite - pivotBlack);\n outColor.rgb = pow( normalizedOut, gamma ) * scale + pivotBlack;\n }\n vec3 lumaWgts = vec3(0.212599993, 0.715200007, 0.0722000003);\n float luma = dot( outColor.rgb, lumaWgts );\n outColor.rgb = luma + saturation * (outColor.rgb - luma);\n outColor.rgb = clamp( outColor.rgb, clampBlack, clampWhite );\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Low Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add GradingPrimary 'log' forward processing\n \n {\n vec3 brightness = vec3(0., 0., 0.);\n vec3 contrast = vec3(0.800000012, 0.800000012, 0.800000012);\n vec3 gamma = vec3(1., 1., 1.);\n const float pivot = 0.400000006;\n const float pivotBlack = 0.;\n const float pivotWhite = 1.;\n const float clampBlack = -3.40282347e+38;\n const float clampWhite = 3.40282347e+38;\n const float saturation = 1.10000002;\n outColor.rgb += brightness;\n outColor.rgb = ( outColor.rgb - pivot ) * contrast + pivot;\n if ( gamma != vec3(1., 1., 1.) )\n {\n vec3 normalizedOut = abs(outColor.rgb - pivotBlack) / (pivotWhite - pivotBlack);\n vec3 scale = sign(outColor.rgb - pivotBlack) * (pivotWhite - pivotBlack);\n outColor.rgb = pow( normalizedOut, gamma ) * scale + pivotBlack;\n }\n vec3 lumaWgts = vec3(0.212599993, 0.715200007, 0.0722000003);\n float luma = dot( outColor.rgb, lumaWgts );\n outColor.rgb = luma + saturation * (outColor.rgb - luma);\n outColor.rgb = clamp( outColor.rgb, clampBlack, clampWhite );\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"AgX/AgX - Very Low Contrast":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\nuniform sampler3D blender_lut3d_1Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.55937113331007726, 0.076220705483506221, 0.065526711778770175, 0., 0.30478334662300893, 0.78797177010284647, 0.16454675460372412, 0., 0.13584556048047711, 0.1358074661747215, 0.76992650165037446, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(36., 36., 36.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(37., 37., 37.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.0270270277);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0270270277);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0., 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0270270277, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0270270277, 0.0270270277);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0270270277, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0270270277, 0.0270270277, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(0.96797150353695682, 0.13181009198676014, 0.046878652950633655, 0., 0.11789008541573694, 0.91607837651128576, 0.012432801782063633, 0., -0.085861625689108531, -0.047888564165671443, 0.94068860851626579, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add GradingPrimary 'log' forward processing\n \n {\n vec3 brightness = vec3(0., 0., 0.);\n vec3 contrast = vec3(0.699999988, 0.699999988, 0.699999988);\n vec3 gamma = vec3(1., 1., 1.);\n const float pivot = 0.400000006;\n const float pivotBlack = 0.;\n const float pivotWhite = 1.;\n const float clampBlack = -3.40282347e+38;\n const float clampWhite = 3.40282347e+38;\n const float saturation = 1.14999998;\n outColor.rgb += brightness;\n outColor.rgb = ( outColor.rgb - pivot ) * contrast + pivot;\n if ( gamma != vec3(1., 1., 1.) )\n {\n vec3 normalizedOut = abs(outColor.rgb - pivotBlack) / (pivotWhite - pivotBlack);\n vec3 scale = sign(outColor.rgb - pivotBlack) * (pivotWhite - pivotBlack);\n outColor.rgb = pow( normalizedOut, gamma ) * scale + pivotBlack;\n }\n vec3 lumaWgts = vec3(0.212599993, 0.715200007, 0.0722000003);\n float luma = dot( outColor.rgb, lumaWgts );\n outColor.rgb = luma + saturation * (outColor.rgb - luma);\n outColor.rgb = clamp( outColor.rgb, clampBlack, clampWhite );\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(25., 25., 25., 1.) * res;\n res = vec4(-12.4739304, -12.4739304, -12.4739304, -0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log 'Anti-Log' processing\n \n {\n outColor.rgb = pow( vec3(2., 2., 2.), outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n vec4 tmp = res;\n res = mat4(1.0473107847120087, -0.15331493679326946, -0.050165787234335076, 0., -0.13598180076490973, 1.1107622300653881, -0.0079040427623260339, 0., 0.088671035909937621, 0.042552804668204332, 1.0580697604757736, 0., 0., 0., 0., 1.) * tmp;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0400000028, 0.0400000028, 0.0400000028, 1.) * res;\n res = vec4(0.498957247, 0.498957247, 0.498957247, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_1\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_1Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_1Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'basicFwd' processing\n \n {\n vec4 gamma = vec4(2.3999999999999999, 2.3999999999999999, 2.3999999999999999, 1.);\n vec4 res = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma );\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4357496,"count":151959,"linear":false,"size":37,"channels":3},{"sampler":"blender_lut3d_1Sampler","offset":2135180,"count":555579,"linear":false,"size":57,"channels":3}]},"Khronos PBR Neutral/None":{"shader":"\n// Declaration of all textures\n\nuniform sampler3D blender_lut3d_0Sampler;\n\n// Declaration of the OCIO shader function\n\nvec4 blenderDisplay(vec4 inPixel)\n{\n vec4 outColor = inPixel;\n \n // Add Log processing\n \n {\n outColor.rgb = max( vec3(1.17549435e-38, 1.17549435e-38, 1.17549435e-38), outColor.rgb);\n outColor.rgb = log2(outColor.rgb);\n }\n \n // Add Matrix processing\n \n {\n vec4 res = vec4(outColor.rgb.r, outColor.rgb.g, outColor.rgb.b, outColor.a);\n res = vec4(0.0526315793, 0.0526315793, 0.0526315793, 1.) * res;\n res = vec4(0.473684222, 0.473684222, 0.473684222, 0.) + res;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n \n // Add LUT 3D processing for blender_lut3d_0\n \n {\n vec3 coords = outColor.rgb * vec3(56., 56., 56.); \n vec3 baseInd = floor(coords);\n vec3 frac = coords - baseInd;\n vec3 f1, f4;\n baseInd = ( baseInd.zyx + vec3(0.5, 0.5, 0.5) ) / vec3(57., 57., 57.);\n vec3 v1 = texture(blender_lut3d_0Sampler, baseInd).rgb;\n vec3 nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.0175438598);\n vec3 v4 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n if (frac.r >= frac.g)\n {\n if (frac.g >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n vec3 f3 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0., 0.0175438598);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.r, 1. - frac.r, 1. - frac.r);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n vec3 f3 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0., 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.g, frac.g, frac.g);\n vec3 f2 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n vec3 f3 = vec3(frac.r - frac.g, frac.r - frac.g, frac.r - frac.g);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n else\n {\n if (frac.g <= frac.b)\n {\n nextInd = baseInd + vec3(0.0175438598, 0., 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.b, 1. - frac.b, 1. - frac.b);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.b - frac.g, frac.b - frac.g, frac.b - frac.g);\n vec3 f3 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else if (frac.r >= frac.b)\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0., 0.0175438598, 0.0175438598);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.b, frac.b, frac.b);\n vec3 f2 = vec3(frac.g - frac.r, frac.g - frac.r, frac.g - frac.r);\n vec3 f3 = vec3(frac.r - frac.b, frac.r - frac.b, frac.r - frac.b);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n else\n {\n nextInd = baseInd + vec3(0., 0.0175438598, 0.);\n vec3 v2 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n nextInd = baseInd + vec3(0.0175438598, 0.0175438598, 0.);\n vec3 v3 = texture(blender_lut3d_0Sampler, nextInd).rgb;\n f1 = vec3(1. - frac.g, 1. - frac.g, 1. - frac.g);\n f4 = vec3(frac.r, frac.r, frac.r);\n vec3 f2 = vec3(frac.g - frac.b, frac.g - frac.b, frac.g - frac.b);\n vec3 f3 = vec3(frac.b - frac.r, frac.b - frac.r, frac.b - frac.r);\n outColor.rgb = (f2 * v2) + (f3 * v3);\n }\n }\n outColor.rgb = outColor.rgb + (f1 * v1) + (f4 * v4);\n }\n \n // Add Gamma 'monCurveRev' processing\n \n {\n vec4 breakPnt = vec4(0.00303993467, 0.00303993467, 0.00303993467, 1.);\n vec4 slope = vec4(12.9232101, 12.9232101, 12.9232101, 1.);\n vec4 scale = vec4(1.05499995, 1.05499995, 1.05499995, 1.00000095);\n vec4 offset = vec4(0.0549999997, 0.0549999997, 0.0549999997, 9.99999997e-07);\n vec4 gamma = vec4(0.416666657, 0.416666657, 0.416666657, 0.999998987);\n vec4 isAboveBreak = vec4(greaterThan( outColor, breakPnt));\n vec4 linSeg = outColor * slope;\n vec4 powSeg = pow( max( vec4(0., 0., 0., 0.), outColor ), gamma ) * scale - offset;\n vec4 res = isAboveBreak * powSeg + ( vec4(1., 1., 1., 1.) - isAboveBreak ) * linSeg;\n outColor.rgb = vec3(res.x, res.y, res.z);\n outColor.a = res.w;\n }\n\n return outColor;\n}\n","textures":[{"sampler":"blender_lut3d_0Sampler","offset":4965332,"count":555579,"linear":false,"size":57,"channels":3}]}},"data_sha256":"5780e9b9a307c93c50d1e105129b606736557c70d2911068d8934592194b4e18"}
|