diff --git a/libobs/data/solid.effect b/libobs/data/solid.effect index 18a210fcd..5758e92c9 100644 --- a/libobs/data/solid.effect +++ b/libobs/data/solid.effect @@ -1,6 +1,10 @@ uniform float4x4 ViewProj; uniform float4 color = {1.0, 1.0, 1.0, 1.0}; +uniform float4 randomvals1; +uniform float4 randomvals2; +uniform float4 randomvals3; + struct SolidVertInOut { float4 pos : POSITION; }; @@ -17,6 +21,19 @@ float4 PSSolid(SolidVertInOut vert_in) : TARGET return color; } +float rand(float4 pos, float4 rand_vals) +{ + return 0.5 + 0.5 * frac(sin(dot(pos.xy, float2(rand_vals.x, rand_vals.y))) * rand_vals.z); +} + +float4 PSRandom(SolidVertInOut vert_in) : TARGET +{ + return float4(rand(vert_in.pos, randomvals1), + rand(vert_in.pos, randomvals2), + rand(vert_in.pos, randomvals3), + 1.0); +} + struct SolidColoredVertInOut { float4 pos : POSITION; float4 color : COLOR; @@ -52,3 +69,12 @@ technique SolidColored pixel_shader = PSSolidColored(vert_in); } } + +technique Random +{ + pass + { + vertex_shader = VSSolid(vert_in); + pixel_shader = PSRandom(vert_in); + } +}