From 42c7aaf94a741d66bbbda391a0eed69610212563 Mon Sep 17 00:00:00 2001 From: James Brundage <@github.com> Date: Wed, 14 Feb 2024 12:31:14 -0800 Subject: [PATCH] feat: Shader Commands now support -Force ( Fixes #163 ) Also fixing Set-OBSShaderFilter -ShaderFile --- Build/obs--shaders.build.ps1 | 10 ++++++++-- Commands/Filters/Set-OBSShaderFilter.ps.ps1 | 20 ++++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Build/obs--shaders.build.ps1 b/Build/obs--shaders.build.ps1 index c4a6533ec..ee22fe09f 100644 --- a/Build/obs--shaders.build.ps1 +++ b/Build/obs--shaders.build.ps1 @@ -287,6 +287,12 @@ foreach ($shaderParameterSet in $ShaderParameters) { Help = "The inline value of the shader. This will normally be provided as a default parameter, based off of the name." } + $ShaderParameters["Force"] = [Ordered]@{ + ParameterName = "Force" + ParameterType = [switch] + Help = "If set, will force the recreation of a shader that already exists" + } + $ShaderParameters["PassThru"] = [Ordered]@{ ParameterName = "PassThru" ParameterType = [switch] @@ -362,7 +368,7 @@ switch -regex ($myVerb) { ShaderSetting = $ShaderSettings FilterName = $FilterName SourceName = $SourceName - } + } foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { @@ -384,7 +390,7 @@ switch -regex ($myVerb) { $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName } else { $ShaderFilterSplat.ShaderText = $shaderText - } + } if ($myVerb -eq 'Add') { Add-OBSShaderFilter @ShaderFilterSplat diff --git a/Commands/Filters/Set-OBSShaderFilter.ps.ps1 b/Commands/Filters/Set-OBSShaderFilter.ps.ps1 index b4f4e699a..bc1e16078 100644 --- a/Commands/Filters/Set-OBSShaderFilter.ps.ps1 +++ b/Commands/Filters/Set-OBSShaderFilter.ps.ps1 @@ -9,10 +9,26 @@ function Set-OBSShaderFilter This requires that the [OBS Shader Filter](https://github.com/exeldro/obs-shaderfilter) is installed. .EXAMPLE Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | - Set-OBSShaderFilter -FilterName "Shader" -ShaderFile fisheye-xy -ShaderSetting @{ + Set-OBSShaderFilter -FilterName "FisheyeShader" -ShaderFile fisheye-xy -ShaderSetting @{ center_x_percent=30 center_y_percent=70 } + .EXAMPLE + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSShaderFilter -FilterName "SeasickShader" -ShaderFile seasick -ShaderSetting @{ + amplitude = 0.05 + speed = 0.5 + frequency = 12 + opacity = 1 + } + .EXAMPLE + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSShaderFilter -FilterName "TwistShader" -ShaderFile twist -ShaderSetting @{ + center_x_percent=50 + center_y_percent=50 + power = 0.05 + rotation = 80 + } #> [inherit(Command={ Import-Module ..\..\obs-powershell.psd1 -Global @@ -56,7 +72,7 @@ function Set-OBSShaderFilter } elseif ($ShaderFile) { if ($ShaderFile -match '[\\/]') { - $shaderSettings.shader_file_name = $shaderSettings.$ExecutionContext.SessionState.Path.GetResolvedProviderPathFromPSPath($ShaderFile) -replace "\\", "/" + $shaderSettings.shader_file_name = "$($ExecutionContext.SessionState.Path.GetResolvedPSPathFromPSPath($ShaderFile))" -replace "\\", "/" } else { if (-not $script:CachedOBSShaderFilters) { $script:CachedOBSShaderFilters =