Added shaders
This commit is contained in:
306
data_from_portwine/Reshade/Shaders/Trails.fx
Normal file
306
data_from_portwine/Reshade/Shaders/Trails.fx
Normal file
@ -0,0 +1,306 @@
|
||||
////----------//
|
||||
///**Trails**///
|
||||
//----------////
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//* Trails
|
||||
//* For Reshade 3.0
|
||||
//* --------------------------
|
||||
//* This work is licensed under a Creative Commons Attribution 3.0 Unported License.
|
||||
//* So you are free to share, modify and adapt it for your needs, and even use it for commercial use.
|
||||
//* I would also love to hear about a project you are using it with.
|
||||
//* https://creativecommons.org/licenses/by/3.0/us/
|
||||
//*
|
||||
//* Have fun,
|
||||
//* Jose Negrete AKA BlueSkyDefender
|
||||
//*
|
||||
//* https://github.com/BlueSkyDefender/Depth3D
|
||||
//* ---------------------------------
|
||||
//*
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define Per_Color_Channel 0 // Lets you adjust per Color Channel.Default 0 off
|
||||
#define Add_Depth_Effects 0 // Lets this effect be affected by Depth..Default 0 off
|
||||
|
||||
#if !Per_Color_Channel
|
||||
uniform float Persistence <
|
||||
ui_type = "drag";
|
||||
ui_min = 0.0; ui_max = 1.00;
|
||||
ui_label = "Persistence";
|
||||
ui_tooltip = "Increase persistence longer the trail or afterimage.\n"
|
||||
"If pushed out the effect is alot like long exposure.\n"
|
||||
"This can be used for light painting in games.\n"
|
||||
"1000/1 is 1.0, so 1/2 is 0.5 and so forth.\n"
|
||||
"Default is 0.25, 0 is infinity.";
|
||||
> = 0.25;
|
||||
#else
|
||||
uniform float3 Persistence <
|
||||
ui_type = "drag";
|
||||
ui_min = 0.0; ui_max = 1.00;
|
||||
ui_label = "Persistence";
|
||||
ui_tooltip = "Increase persistence longer the trail or afterimage RGB.\n"
|
||||
"If pushed out the effect is alot like long exposure.\n"
|
||||
"This can be used for light painting in games.\n"
|
||||
"1000/1 is 1.0, so 1/2 is 0.5 and so forth.\n"
|
||||
"Default is 0.25, 0 is infinity.";
|
||||
> = float3(0.25,0.25,0.25);
|
||||
#endif
|
||||
|
||||
uniform float TQ <
|
||||
ui_type = "drag";
|
||||
ui_min = 0.0; ui_max = 1.0;
|
||||
ui_label = "Trail Blur Quality";
|
||||
ui_tooltip = "Adjust Trail Blur Quality.\n"
|
||||
"Default is Zero.";
|
||||
> = 0.0;
|
||||
|
||||
//uniform bool TrailsX2 <
|
||||
// ui_label = "Trails X2";
|
||||
// ui_tooltip = "Two times the samples.\n"
|
||||
// "This disables Trail Quality.";
|
||||
//> = false;
|
||||
|
||||
uniform bool PS2 <
|
||||
ui_label = "PS2 Style Echo";
|
||||
ui_tooltip = "This enables PS2 Style Echo in your game.\n"
|
||||
"This disables Trail Quality.";
|
||||
> = false;
|
||||
#if Add_Depth_Effects
|
||||
uniform bool Allow_Depth <
|
||||
ui_label = "Depth Map Toggle";
|
||||
ui_tooltip = "This Alows Depth to be used in Trails.";
|
||||
ui_category = "Depth Buffer";
|
||||
> = 0;
|
||||
|
||||
uniform int Depth_Map <
|
||||
ui_type = "combo";
|
||||
ui_items = "Normal\0Reverse\0";
|
||||
ui_label = "Custom Depth Map";
|
||||
ui_tooltip = "Pick your Depth Map.";
|
||||
ui_category = "Depth Buffer";
|
||||
> = 0;
|
||||
|
||||
uniform float Depth_Map_Adjust <
|
||||
ui_type = "slider";
|
||||
ui_min = 0.0; ui_max = 1.0;
|
||||
ui_label = "Depth Map Adjustment";
|
||||
ui_tooltip = "Adjust the depth map and sharpness distance.";
|
||||
ui_category = "Depth Buffer";
|
||||
> = 0.0;
|
||||
|
||||
uniform bool Hard_CutOff <
|
||||
ui_label = "Hard CutOff";
|
||||
ui_tooltip = "Depth Cutoff toggle this give a hard cutoff for depth isolation.";
|
||||
ui_category = "Depth Buffer";
|
||||
> = 0;
|
||||
|
||||
uniform bool Depth_Map_Flip <
|
||||
ui_label = "Depth Map Flip";
|
||||
ui_tooltip = "Flip the depth map if it is upside down.";
|
||||
ui_category = "Depth Buffer";
|
||||
> = 0;
|
||||
|
||||
uniform bool Invert_Depth <
|
||||
ui_label = "Depth Map Inverte";
|
||||
ui_tooltip = "Inverts Depth so you can target only your weapon or what's near you.";
|
||||
ui_category = "Depth Buffer";
|
||||
> = 0;
|
||||
|
||||
uniform bool Depth_View <
|
||||
ui_label = "Depth Map View";
|
||||
ui_tooltip = "Lets you see Depth so you can Debug.";
|
||||
ui_category = "Depth Buffer";
|
||||
> = 0;
|
||||
#else
|
||||
static const int Allow_Depth = 0;
|
||||
static const int Depth_Map = 0;
|
||||
static const float Depth_Map_Adjust = 250.0;
|
||||
static const int Depth_Map_Flip = 0;
|
||||
static const int Invert_Depth = 0;
|
||||
static const int Depth_View = 0;
|
||||
static const int Hard_CutOff = 0;
|
||||
#endif
|
||||
/////////////////////////////////////////////D3D Starts Here/////////////////////////////////////////////////////////////////
|
||||
texture DepthBufferTex : DEPTH;
|
||||
|
||||
sampler DepthBuffer
|
||||
{
|
||||
Texture = DepthBufferTex;
|
||||
};
|
||||
|
||||
texture BackBufferTex : COLOR;
|
||||
|
||||
sampler BackBuffer
|
||||
{
|
||||
Texture = BackBufferTex;
|
||||
};
|
||||
|
||||
texture CurrentBackBufferT { Width = BUFFER_WIDTH; Height = BUFFER_HEIGHT; Format = RGBA8;};
|
||||
|
||||
sampler CBackBuffer
|
||||
{
|
||||
Texture = CurrentBackBufferT;
|
||||
};
|
||||
|
||||
|
||||
texture PBB { Width = BUFFER_WIDTH; Height = BUFFER_HEIGHT; Format = RGBA8; MipLevels = 2;};
|
||||
|
||||
sampler PBackBuffer
|
||||
{
|
||||
Texture = PBB;
|
||||
};
|
||||
|
||||
texture PSBB { Width = BUFFER_WIDTH; Height = BUFFER_HEIGHT; Format = RGBA8;};
|
||||
|
||||
sampler PSBackBuffer
|
||||
{
|
||||
Texture = PSBB;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////TAA/////////////////////////////////////////////////////////////////////
|
||||
#define pix float2(BUFFER_RCP_WIDTH, BUFFER_RCP_HEIGHT)
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
float Depth(in float2 texcoord : TEXCOORD0)
|
||||
{
|
||||
if (Depth_Map_Flip)
|
||||
texcoord.y = 1 - texcoord.y;
|
||||
|
||||
float zBuffer = tex2D(DepthBuffer, texcoord).x; //Depth Buffer
|
||||
|
||||
//Conversions to linear space.....
|
||||
//Near & Far Adjustment
|
||||
float Far = 1.0, Near = 0.125/250.0; //Division Depth Map Adjust - Near
|
||||
|
||||
float2 Z = float2( zBuffer, 1-zBuffer );
|
||||
|
||||
if (Depth_Map == 0)//DM0. Normal
|
||||
zBuffer = Far * Near / (Far + Z.x * (Near - Far));
|
||||
else if (Depth_Map == 1)//DM1. Reverse
|
||||
zBuffer = Far * Near / (Far + Z.y * (Near - Far));
|
||||
|
||||
return saturate(zBuffer);
|
||||
}
|
||||
|
||||
float3 T_Out(float4 position : SV_Position, float2 texcoord : TEXCOORD) : SV_Target
|
||||
{
|
||||
float TQA = TQ, D = Depth(texcoord);
|
||||
if(PS2)
|
||||
TQA = 0;
|
||||
|
||||
float3 C = tex2D(BackBuffer, texcoord).rgb;
|
||||
//float3 PS = tex2D(PSBackBuffer, texcoord).rgb;
|
||||
|
||||
float3 P = tex2Dlod(PBackBuffer, float4(texcoord,0,TQA)).rgb;
|
||||
|
||||
#if !PerColor
|
||||
float Per = 1-Persistence;
|
||||
#else
|
||||
float3 Per = 1-Persistence;
|
||||
#endif
|
||||
|
||||
D = smoothstep(0,Depth_Map_Adjust,D);
|
||||
|
||||
if(Hard_CutOff)
|
||||
D = step(0.5,D);
|
||||
|
||||
if(Invert_Depth)
|
||||
D = 1-D;
|
||||
|
||||
if(!PS2)
|
||||
{
|
||||
P *= Per;
|
||||
C = max( tex2D(BackBuffer, texcoord).rgb, P);
|
||||
//PS = max( tex2D(BackBuffer, texcoord).rgb, P);
|
||||
}
|
||||
else
|
||||
{
|
||||
C = (1-Per) * C + Per * P;
|
||||
//PS = (1-Per) * PS + Per * P;
|
||||
}
|
||||
|
||||
//if(TrailsX2)
|
||||
//{
|
||||
// C = lerp(PS,C,0.5);
|
||||
//}
|
||||
|
||||
if(Allow_Depth)
|
||||
C = lerp(C,tex2D(BackBuffer, texcoord).rgb,saturate(D));
|
||||
|
||||
if(Depth_View)
|
||||
C = D;
|
||||
|
||||
return C;
|
||||
}
|
||||
|
||||
void Current_BackBuffer_T(float4 position : SV_Position, float2 texcoord : TEXCOORD, out float4 color : SV_Target0)
|
||||
{
|
||||
color = tex2D(BackBuffer,texcoord);
|
||||
}
|
||||
|
||||
void Past_BB(float4 position : SV_Position, float2 texcoord : TEXCOORD, out float4 Past : SV_Target0, out float4 PastSingle : SV_Target1)
|
||||
{ float2 samples[12] = {
|
||||
float2(-0.326212, -0.405805),
|
||||
float2(-0.840144, -0.073580),
|
||||
float2(-0.695914, 0.457137),
|
||||
float2(-0.203345, 0.620716),
|
||||
float2(0.962340, -0.194983),
|
||||
float2(0.473434, -0.480026),
|
||||
float2(0.519456, 0.767022),
|
||||
float2(0.185461, -0.893124),
|
||||
float2(0.507431, 0.064425),
|
||||
float2(0.896420, 0.412458),
|
||||
float2(-0.321940, -0.932615),
|
||||
float2(-0.791559, -0.597705)
|
||||
};
|
||||
|
||||
float4 sum_A = tex2D(BackBuffer,texcoord), sum_B = 0;//tex2D(CBackBuffer,texcoord);
|
||||
|
||||
if(!PS2)
|
||||
{
|
||||
float Adjust = TQ*pix.x;
|
||||
[loop]
|
||||
for (int i = 0; i < 12; i++)
|
||||
{
|
||||
sum_A += tex2Dlod(BackBuffer, float4(texcoord + Adjust * samples[i],0,0));
|
||||
//sum_B += tex2Dlod(CBackBuffer, float4(texcoord + Adjust * samples[i],0,0));
|
||||
}
|
||||
Past = sum_A * 0.07692307;
|
||||
PastSingle = 0;//sum_B * 0.07692307;
|
||||
}
|
||||
else
|
||||
{
|
||||
Past = sum_A;
|
||||
PastSingle = 0;//sum_B * 0.07692307;
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////ReShade.fxh/////////////////////////////////////////////////////////////
|
||||
// Vertex shader generating a triangle covering the entire screen
|
||||
void PostProcessVS(in uint id : SV_VertexID, out float4 position : SV_Position, out float2 texcoord : TEXCOORD)
|
||||
{
|
||||
texcoord.x = (id == 2) ? 2.0 : 0.0;
|
||||
texcoord.y = (id == 1) ? 2.0 : 0.0;
|
||||
position = float4(texcoord * float2(2.0, -2.0) + float2(-1.0, 1.0), 0.0, 1.0);
|
||||
}
|
||||
technique Trails
|
||||
{
|
||||
pass CBB
|
||||
{
|
||||
VertexShader = PostProcessVS;
|
||||
PixelShader = Current_BackBuffer_T;
|
||||
RenderTarget = CurrentBackBufferT;
|
||||
}
|
||||
pass Trails
|
||||
{
|
||||
VertexShader = PostProcessVS;
|
||||
PixelShader = T_Out;
|
||||
}
|
||||
pass PBB
|
||||
{
|
||||
VertexShader = PostProcessVS;
|
||||
PixelShader = Past_BB;
|
||||
RenderTarget0 = PBB;
|
||||
RenderTarget1 = PSBB;
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user