<jittershader name="hdr.bloom.tonemap.aces.jxs">
	<param name="tex_color" type="int" default="0" />
	<param name="tex_bloom" type="int" default="1" />
	<param name="exposure_bias" type="float" default="1.0" />
	<param name="white_point" type="float" default="1.0" />
	<param name="gamma" type="float" default="0.8" />	
	<param name="bloom_amt" type="float" default="1.0" />	
	<language name="glsl" version="1.2">
		<bind param="tex_color" program="fp" />
		<bind param="tex_bloom" program="fp" />
		<bind param="exposure_bias" program="fp" />
		<bind param="white_point" program="fp" />
		<bind param="gamma" program="fp" />
		<bind param="bloom_amt" program="fp" />
		<program name="vp" type="vertex" source="sh.passthrudim.vp.glsl" />
		<program name="fp" type="fragment">
<![CDATA[
#version 120

varying vec2 texcoord0;
varying vec2 texcoord1;
uniform sampler2DRect tex_color;
uniform sampler2DRect tex_bloom;
//uniform sampler2DRect lumtex;
uniform float exposure_bias;
uniform float white_point;
uniform float gamma;	
uniform float bloom_amt;

vec3 ACESFilm(vec3 x) {
    float a = 2.51;
    float b = 0.03;
    float c = 2.43;
    float d = 0.59;
    float e = 0.14;
    return clamp((x*(a*x+b))/(x*(c*x+d)+e), 0.0, 1.0);
}

void main()
{
	vec4 texcolor = texture2DRect(tex_color, texcoord0);
	vec3 bloomcolor = texture2DRect(tex_bloom, texcoord1).rgb;
	vec3 color = texcolor.rgb;

	color += (bloomcolor*bloom_amt);
	
	vec3 curr = ACESFilm(color*exposure_bias);

	vec3 whiteScale = 1.0/ACESFilm(vec3(white_point));
	color = curr*whiteScale;

	vec3 retColor = pow(color,vec3(1.0/gamma));
	gl_FragColor = vec4(retColor, texcolor.a);
}

]]>		
		</program>		
	</language>
</jittershader>
