obs-StreamFX/data/examples/shaders/feature-test.effect
2020-05-31 01:41:07 +02:00

113 lines
2.8 KiB
Text

// --------------------------------------------------------------------------------
// Uniforms set by libobs
uniform float4x4 ViewProj<
bool automatic = true;
>;
// --------------------------------------------------------------------------------
// Uniforms set by StreamFX
uniform float4 Time<
bool automatic = true;
>;
uniform float4 ViewSize<
bool automatic = true;
>;
// Filters, Transitions
uniform texture2d InputA<
bool automatic = true;
>;
// Transitions
uniform texture2d InputB<
bool automatic = true;
>;
uniform float TransitionTime<
bool automatic = true;
>;
// --------------------------------------------------------------------------------
// Parameters
uniform bool BoolParameter = false;
uniform float FloatParameter<
string name = "Float Parameter";
string description = "This is a 32-bit floating point value.";
string field_type = "input";
string suffix = " %";
float minimum = -100.;
float maximum = 100.;
float step = .5;
float scale = .01;
> = 0.;
uniform float2 Float2Parameter<
string name = "Float2 Parameter";
string description = "This is a 32-bit floating point value.";
string field_type = "input";
string suffix = " %";
float2 minimum = {-100., -100.};
float2 maximum = {100., 100.};
float2 step = {.5, .5};
float2 scale = {.01, .01};
> = {0., 0.};
uniform float3 Float3Parameter = {0., 0., 0.};
uniform float4 Float4Parameter = {0., 0., 0., 0.};
uniform int IntParameter<
string name = "Enum Parameter";
string description = "This parameter is an enumeration";
string field_type = "enum";
// Enumeration
int enum = 4;
int enum_0 = 0;
string enum_0_name = "Null";
int enum_1 = 1;
string enum_1_name = "One";
int enum_2 = 2;
string enum_2_name = "Two";
int enum_3 = 4;
string enum_3_name = "Four";
> = 0;
uniform int2 Int2Parameter = {0, 0};
uniform int3 Int3Parameter = {0, 0, 0};
uniform int4 Int4Parameter = {0, 0, 0, 0};
// --------------------------------------------------------------------------------
// Vertex Processing
struct VertexData {
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
VertexData VSDefault(VertexData vtx) {
vtx.pos = mul(float4(vtx.pos.xyz, 1.), ViewProj);
return vtx;
};
// --------------------------------------------------------------------------------
// Default Technique
float4 PSDefault(VertexData vtx) : TARGET {
if (BoolParameter)
vtx.uv += 1.;
vtx.uv += FloatParameter;
vtx.uv += Float2Parameter;
vtx.uv += Float3Parameter.xy * Float3Parameter.zz;
vtx.uv += Float4Parameter.xy * Float4Parameter.zz;
if (IntParameter == 1) {
return float4(1., 0., 0., 1.);
} else if (IntParameter == 2) {
return float4(0., 1., 0., 1.);
} else if (IntParameter == 4) {
return float4(0., 0., 1., 1.);
}
return float4(0., 0., 0., 1.);
}
technique Draw
{
pass
{
vertex_shader = VSDefault(vtx);
pixel_shader = PSDefault(vtx);
}
}