obs-StreamFX/data/effects/standard.effect
2021-10-29 09:26:00 +02:00

124 lines
2.7 KiB
Text

#include "shared.effect"
uniform texture2D InputA<
bool automatic = true;
>;
uniform texture2D InputB<
bool automatic = true;
>;
//------------------------------------------------------------------------------
// Technique: Texture
//------------------------------------------------------------------------------
// Parameters:
// - InputA: RGBA Texture
float4 PSTexture(VertexData vtx) : TARGET {
return InputA.Sample(BlankSampler, vtx.uv);
};
technique Draw
{
pass
{
vertex_shader = DefaultVertexShader(vtx);
pixel_shader = PSTexture(vtx);
};
};
technique Texture
{
pass
{
vertex_shader = DefaultVertexShader(vtx);
pixel_shader = PSTexture(vtx);
};
};
//------------------------------------------------------------------------------
// Technique: TextureColor
//------------------------------------------------------------------------------
// Parameters:
// - InputA: RGBA Texture
float4 PSTextureColor(VertexColorData vtx) : TARGET {
return InputA.Sample(BlankSampler, vtx.uv) * vtx.clr;
};
technique TextureColor
{
pass
{
vertex_shader = ColorVertexShader(vtx);
pixel_shader = PSTextureColor(vtx);
};
};
//------------------------------------------------------------------------------
// Technique: Texture Premultiplied
//------------------------------------------------------------------------------
// Parameters:
// - InputA: RGBA Texture
float4 PSTexturePremultiplied(VertexData vtx) : TARGET {
float4 rgba = InputA.Sample(BlankSampler, vtx.uv);
rgba.rgb /= rgba.a > (1. / 1024.) ? rgba.a : 1.0;
return rgba;
};
technique DrawPremultiplied
{
pass
{
vertex_shader = DefaultVertexShader(vtx);
pixel_shader = PSTexturePremultiplied(vtx);
};
};
technique TexturePremultiplied
{
pass
{
vertex_shader = DefaultVertexShader(vtx);
pixel_shader = PSTexturePremultiplied(vtx);
};
};
//------------------------------------------------------------------------------
// Technique: Restore Alpha
//------------------------------------------------------------------------------
// Parameters:
// - InputA: RGBX Texture
// - InputB: XXXA Texture
float4 PSRestoreAlpha(VertexData vtx) : TARGET {
float4 rgbx = InputA.Sample(BlankSampler, vtx.uv);
float4 xxxa = InputB.Sample(BlankSampler, vtx.uv);
rgbx.a = xxxa.a;
return rgbx;
};
technique RestoreAlpha
{
pass
{
vertex_shader = DefaultVertexShader(vtx);
pixel_shader = PSRestoreAlpha(vtx);
};
};
//------------------------------------------------------------------------------
// Technique: Color
//------------------------------------------------------------------------------
// Parameters:
float4 PSColor(VertexColorData vtx) : TARGET {
return vtx.clr;
};
technique Color
{
pass
{
vertex_shader = ColorVertexShader(vtx);
pixel_shader = PSColor(vtx);
};
};