mirror of
https://github.com/Xaymar/obs-StreamFX
synced 2024-12-03 16:47:26 +00:00
181 lines
3.6 KiB
Text
181 lines
3.6 KiB
Text
// Always provided by OBS
|
|
uniform float4x4 ViewProj<
|
|
bool visible = false;
|
|
string name = "View Projection Matrix";
|
|
>;
|
|
|
|
// Provided by Stream Effects
|
|
uniform float4 Time<
|
|
bool visible = false;
|
|
string name = "Time Array";
|
|
string description = "A float array of length 4, with the indexes being:\n[0] Time Visible in Seconds\n[1] Last Render Time\n[2] Current System Time (24h looping)\n[3] Random value between 0 and 1.";
|
|
>;
|
|
/*uniform float4x4 Random<
|
|
bool visible = false;
|
|
string name = "Random Matrix";
|
|
string description = "A float4x4 value containing random values between 0 and 1. Changes every frame.";
|
|
>;
|
|
uniform float4x4 Seed<
|
|
bool visible = false;
|
|
string name = "Seed Matrix";
|
|
string description = "A float4x4 value containing random seeds values between 0 and 1. Values determined once on Source creation.";
|
|
>;*/
|
|
|
|
// Parameters
|
|
uniform bool BoolParameter<
|
|
bool visible = true;
|
|
string name = "Bool Parameter";
|
|
string description = "Example";
|
|
>;
|
|
/*uniform int IntParameter<
|
|
bool visible = true;
|
|
string name = "Int Parameter";
|
|
string description = "Example";
|
|
>;
|
|
uniform int2 Int2Parameter<
|
|
bool visible = true;
|
|
string name = "Int2 Parameter";
|
|
string description = "Example";
|
|
>;
|
|
uniform int3 Int3Parameter<
|
|
bool visible = true;
|
|
string name = "Int3 Parameter";
|
|
string description = "Example";
|
|
>;
|
|
uniform int4 Int4Parameter<
|
|
bool visible = true;
|
|
string name = "Int4 Parameter";
|
|
string description = "Example";
|
|
>;*/
|
|
uniform float FloatParameter<
|
|
bool visible = true;
|
|
string name = "Float Parameter";
|
|
string description = "Example";
|
|
>;
|
|
uniform float2 Float2Parameter<
|
|
bool visible = true;
|
|
string name = "Float2 Parameter";
|
|
string description = "Example";
|
|
>;
|
|
uniform float3 Float3Parameter<
|
|
bool visible = true;
|
|
string name = "Float3 Parameter";
|
|
string description = "Example";
|
|
>;
|
|
uniform float4 Float4Parameter<
|
|
bool visible = true;
|
|
string name = "Float4 Parameter";
|
|
string description = "Example";
|
|
>;
|
|
|
|
// ---------- Shader Code
|
|
sampler_state def_sampler {
|
|
AddressU = Wrap;
|
|
AddressV = Wrap;
|
|
Filter = Linear;
|
|
};
|
|
|
|
struct VertData {
|
|
float4 pos : POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
};
|
|
|
|
struct FragData {
|
|
float4 pos : POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
};
|
|
|
|
FragData VSDefault(VertData v_in) {
|
|
FragData vert_out;
|
|
vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj);
|
|
vert_out.uv = v_in.uv;
|
|
return vert_out;
|
|
}
|
|
|
|
float4 PSTime(FragData v_in) : TARGET {
|
|
return float4(
|
|
cos(Time[0] * 5.) * 0.5 + 0.5,
|
|
cos(Time[0] * 0.) * 0.5 + 0.5,
|
|
cos(Time[0] * 0.) * 0.5 + 0.5,
|
|
1.0);
|
|
}
|
|
|
|
technique Draw
|
|
{
|
|
pass
|
|
{
|
|
vertex_shader = VSDefault(v_in);
|
|
pixel_shader = PSTime(v_in);
|
|
}
|
|
}
|
|
|
|
float4 PSBool(FragData v_in) : TARGET {
|
|
if (BoolParameter)
|
|
return float4(
|
|
cos(Time[0] * 5.) * 0.5 + 0.5,
|
|
cos(Time[0] * 0.) * 0.5 + 0.5,
|
|
cos(Time[0] * 0.) * 0.5 + 0.5,
|
|
1.0);
|
|
return float4(0, 0, 0, 1.0);
|
|
}
|
|
|
|
technique Bool
|
|
{
|
|
pass
|
|
{
|
|
vertex_shader = VSDefault(v_in);
|
|
pixel_shader = PSBool(v_in);
|
|
}
|
|
}
|
|
|
|
float4 PSFloat(FragData v_in) : TARGET {
|
|
return float4(FloatParameter.xxx, 1.0);
|
|
}
|
|
|
|
technique Float
|
|
{
|
|
pass
|
|
{
|
|
vertex_shader = VSDefault(v_in);
|
|
pixel_shader = PSFloat(v_in);
|
|
}
|
|
}
|
|
|
|
float4 PSFloat2(FragData v_in) : TARGET {
|
|
return Float2Parameter.xxxy;
|
|
}
|
|
|
|
technique Float2
|
|
{
|
|
pass
|
|
{
|
|
vertex_shader = VSDefault(v_in);
|
|
pixel_shader = PSFloat2(v_in);
|
|
}
|
|
}
|
|
|
|
float4 PSFloat3(FragData v_in) : TARGET {
|
|
return float4(Float3Parameter, 1.0);
|
|
}
|
|
|
|
technique Float3
|
|
{
|
|
pass
|
|
{
|
|
vertex_shader = VSDefault(v_in);
|
|
pixel_shader = PSFloat3(v_in);
|
|
}
|
|
}
|
|
|
|
float4 PSFloat4(FragData v_in) : TARGET {
|
|
return Float4Parameter;
|
|
}
|
|
|
|
technique Float4
|
|
{
|
|
pass
|
|
{
|
|
vertex_shader = VSDefault(v_in);
|
|
pixel_shader = PSFloat4(v_in);
|
|
}
|
|
}
|