mirror of
https://github.com/BC46/freelancer-hd-edition
synced 2024-08-30 18:32:47 +00:00
68 lines
2.8 KiB
HLSL
68 lines
2.8 KiB
HLSL
/**
|
|
* HDR
|
|
* by Christian Cann Schuldt Jensen ~ CeeJay.dk
|
|
*
|
|
* Not actual HDR - It just tries to mimic an HDR look (relatively high performance cost)
|
|
*/
|
|
|
|
#include "ReShadeUI.fxh"
|
|
|
|
uniform float HDRPower < __UNIFORM_SLIDER_FLOAT1
|
|
ui_min = 0.0; ui_max = 8.0;
|
|
ui_label = "Power";
|
|
> = 1.30;
|
|
uniform float radius1 < __UNIFORM_SLIDER_FLOAT1
|
|
ui_min = 0.0; ui_max = 8.0;
|
|
ui_label = "Radius 1";
|
|
> = 0.793;
|
|
uniform float radius2 < __UNIFORM_SLIDER_FLOAT1
|
|
ui_min = 0.0; ui_max = 8.0;
|
|
ui_label = "Radius 2";
|
|
ui_tooltip = "Raising this seems to make the effect stronger and also brighter.";
|
|
> = 0.87;
|
|
|
|
#include "ReShade.fxh"
|
|
|
|
float3 HDRPass(float4 vpos : SV_Position, float2 texcoord : TexCoord) : SV_Target
|
|
{
|
|
float3 color = tex2D(ReShade::BackBuffer, texcoord).rgb;
|
|
|
|
float3 bloom_sum1 = tex2D(ReShade::BackBuffer, texcoord + float2(1.5, -1.5) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum1 += tex2D(ReShade::BackBuffer, texcoord + float2(-1.5, -1.5) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum1 += tex2D(ReShade::BackBuffer, texcoord + float2( 1.5, 1.5) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum1 += tex2D(ReShade::BackBuffer, texcoord + float2(-1.5, 1.5) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum1 += tex2D(ReShade::BackBuffer, texcoord + float2( 0.0, -2.5) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum1 += tex2D(ReShade::BackBuffer, texcoord + float2( 0.0, 2.5) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum1 += tex2D(ReShade::BackBuffer, texcoord + float2(-2.5, 0.0) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum1 += tex2D(ReShade::BackBuffer, texcoord + float2( 2.5, 0.0) * radius1 * BUFFER_PIXEL_SIZE).rgb;
|
|
|
|
bloom_sum1 *= 0.005;
|
|
|
|
float3 bloom_sum2 = tex2D(ReShade::BackBuffer, texcoord + float2(1.5, -1.5) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum2 += tex2D(ReShade::BackBuffer, texcoord + float2(-1.5, -1.5) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum2 += tex2D(ReShade::BackBuffer, texcoord + float2( 1.5, 1.5) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum2 += tex2D(ReShade::BackBuffer, texcoord + float2(-1.5, 1.5) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum2 += tex2D(ReShade::BackBuffer, texcoord + float2( 0.0, -2.5) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum2 += tex2D(ReShade::BackBuffer, texcoord + float2( 0.0, 2.5) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum2 += tex2D(ReShade::BackBuffer, texcoord + float2(-2.5, 0.0) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
bloom_sum2 += tex2D(ReShade::BackBuffer, texcoord + float2( 2.5, 0.0) * radius2 * BUFFER_PIXEL_SIZE).rgb;
|
|
|
|
bloom_sum2 *= 0.010;
|
|
|
|
float dist = radius2 - radius1;
|
|
float3 HDR = (color + (bloom_sum2 - bloom_sum1)) * dist;
|
|
float3 blend = HDR + color;
|
|
color = pow(abs(blend), abs(HDRPower)) + HDR; // pow - don't use fractions for HDRpower
|
|
|
|
return saturate(color);
|
|
}
|
|
|
|
technique HDR
|
|
{
|
|
pass
|
|
{
|
|
VertexShader = PostProcessVS;
|
|
PixelShader = HDRPass;
|
|
}
|
|
}
|